Конвертация в массив
Блин, разобрался с одной проблемой - теперь появилась другая =(
В кратце, у меня есть массив в функции такого вида:
var allVal={t1960:[7500,0,2],t412:[100,0,0],t2537:[11,333,1]};
Это тестовый массив, прописанный вручную и с ним все ок, скрипт работает как надо. Но, на "живой работе", он должен генерироваться и обрабатываться автоматически, для этого есть функция, которая генерирует его в таком вот виде (без фигурных скобок): t1960:[7500,0,2],t412:[100,0,0],t2537:[11,333,1] По итогу, я уже не могу к нему обращаться как к массиву ("allVal[t1960][0]"), выдает ошибку =( Пробовал по всякому обрамлять его фигурными скобками, ничего не работает... =((( Получается уже не массив а строка. Подскажите, кто знает, как добавить к результату фигурные скобки чтобы получился именно массив? |
Другими словами, в кеш юзеру у меня записывается такая вещь:
t1960:[7500,0,2],t412:[100,0,0],t2537:[11,333,1] А скрипт, настроен (и работает) на работу с таким видом (фигурные скобки):
{t1960:[7500,0,2],t412:[100,0,0],t2537:[11,333,1]}
Вопрос: Как данные взятые из кеша (первый пример), превратить в рабочий массив (второй пример)? У меня получается преобразовать данные из 1 вида, во второй, но они уже не работают так как задумано (точнее вообще не работают) =( |
Alex1233,
а что мешает сохранить обьект в кеше? |
Цитата:
У меня массив этот набирается через перебор всех ячеек на странице, как его начать и закончить теми же фигурными скобками (чтобы все работало), ума не приложу...
$('[row="view"],[row="comm"],[row="rating"]').each(function(){
var id=$(this).parents().attr('id');
var val=$(this).text();
if(allVal[id] && val>allVal[id][i]){
$(this).css('fontWeight','bold');
$(this).attr('title','+'+(val-allVal[id][i]));
}
if(i<2){
newVal.push(val);
i++;
} else {
newVal.push(val);
newVals.push(id+':['+newVal+']');
newVal=[];
i=0;
};
});
|
По сути, ведь если удастся передать рабочий вариант в кэш, то ничего не мешает по той же аналогии преобразовать текущий не рабочий вариант, разве нет?
Тут именно вся сложность, как сделать из этого (что получается автоматом), этот самый, рабочий объект. |
Alex1233,
:-? |
Переделал вот так:
$(document).ready(function(){
var allVal = $.cookie("nnn");
if(!allVal){var allVal={};}
i=0;
var newVal = [];
var newVals = {};
$('[row="view"],[row="comm"],[row="rating"]').each(function(){
var id=$(this).parents().attr('id');
var val=$(this).text();
if(allVal[id] && val>allVal[id][i]){
$(this).css('fontWeight','bold');
$(this).attr('title','+'+(val-allVal[id][i]));
}
newVal.push(val);
if(i<2){
i++;
} else {
newVals.id = [newVal];
//newVals.push(id+':['+newVal+']');
newVal=[];
i=0;
};
});
$.cookie("nnn",newVals, { expires: 365, path: '/' });
})
Не работает =( Помогите кто нибудь.. |
Alex1233,
https://learn.javascript.ru/json |
Цитата:
// Задаем строку по формату, для проверки (как будто взяли ее из кеша)
var allVal="t1960:[7500,0,2],t412:[100,0,0],t2537:[11,333,1]";
// Приводим ее в формат JSON
allVal='{'+allVal+'}';
// Обрабатываем при помощи JSON в массив/объект
allVal=JSON.parse(allVal);
// Проверяем наш массива на работоспособность... Но тщетно...
alert(allVal[t1960][0]);
|
// Задаем строку по формату, для проверки (как будто взяли ее из кеша)
var allVal='"t1960":[7500,0,2],"t412":[100,0,0],"t2537":[11,333,1]';
// Приводим ее в формат JSON
allVal='{'+allVal+'}';
// Обрабатываем при помощи JSON в массив/объект
allVal=JSON.parse(allVal);
Для JSON своя атмосфера с кавычками |
| Часовой пояс GMT +3, время: 13:06. |