12.05.2015, 21:24
|
Аспирант
|
|
Регистрация: 06.04.2014
Сообщений: 45
|
|
Конвертация в массив
Блин, разобрался с одной проблемой - теперь появилась другая =(
В кратце, у меня есть массив в функции такого вида:
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]"), выдает ошибку =(
Пробовал по всякому обрамлять его фигурными скобками, ничего не работает... =((( Получается уже не массив а строка.
Подскажите, кто знает, как добавить к результату фигурные скобки чтобы получился именно массив?
|
|
12.05.2015, 21:31
|
Аспирант
|
|
Регистрация: 06.04.2014
Сообщений: 45
|
|
Другими словами, в кеш юзеру у меня записывается такая вещь:
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 вида, во второй, но они уже не работают так как задумано (точнее вообще не работают) =(
|
|
12.05.2015, 21:54
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,105
|
|
Alex1233,
а что мешает сохранить обьект в кеше?
|
|
12.05.2015, 22:01
|
Аспирант
|
|
Регистрация: 06.04.2014
Сообщений: 45
|
|
Сообщение от рони
|
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;
};
});
|
|
12.05.2015, 22:17
|
Аспирант
|
|
Регистрация: 06.04.2014
Сообщений: 45
|
|
По сути, ведь если удастся передать рабочий вариант в кэш, то ничего не мешает по той же аналогии преобразовать текущий не рабочий вариант, разве нет?
Тут именно вся сложность, как сделать из этого (что получается автоматом), этот самый, рабочий объект.
|
|
12.05.2015, 22:39
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,105
|
|
Alex1233,
|
|
12.05.2015, 23:10
|
Аспирант
|
|
Регистрация: 06.04.2014
Сообщений: 45
|
|
Переделал вот так:
$(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: '/' });
})
Не работает =( Помогите кто нибудь..
|
|
12.05.2015, 23:30
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,105
|
|
|
|
13.05.2015, 01:30
|
Аспирант
|
|
Регистрация: 06.04.2014
Сообщений: 45
|
|
Спасибо за подсказки, вроде похоже на то что нужно (хотя и странно что так все сложно, я думал JSON это из разряда AJAX..), но у меня почему то все равно ничего не работает (все делал по инструкции)..
// Задаем строку по формату, для проверки (как будто взяли ее из кеша)
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]);
|
|
13.05.2015, 02:06
|
Аспирант
|
|
Регистрация: 16.10.2009
Сообщений: 69
|
|
// Задаем строку по формату, для проверки (как будто взяли ее из кеша)
var allVal='"t1960":[7500,0,2],"t412":[100,0,0],"t2537":[11,333,1]';
// Приводим ее в формат JSON
allVal='{'+allVal+'}';
// Обрабатываем при помощи JSON в массив/объект
allVal=JSON.parse(allVal);
Для JSON своя атмосфера с кавычками
|
|
|
|