| 
	| 
	
	| 
		
	| 
			
			 
			
				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,150
					 
		
 |  |  
	| 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,150
					 
		
 |  |  
	| 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,150
					 
		
 |  |  
	|  |  |  
	| 
		
	| 
			
			 
			
				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 своя атмосфера с кавычками |  |  |  |