Конвертация в массив
Блин, разобрался с одной проблемой - теперь появилась другая =(
В кратце, у меня есть массив в функции такого вида: 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, время: 12:59. |