 
			
				27.06.2015, 23:36
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Новичок на форуме 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 13.11.2014 
					
					
					
						Сообщений: 9
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
			
			 
				Объекты в массиве
			 
			
		
		
		
		Помогите разобраться в вопросе. Есть 2 массива из объектов (формат JSON). Один из массивов - обновлённая версия другого. Если конкретнее, то нужно сравнить старый и новый файл, и отобрать порядковые номера в новом массиве тех объектов, которых нет в старом. В объектах уникальным свойством является "id". Пример старого массива  
[{"name":"Иван","id":"1234_SEPT_2014","country":"Москва"}, {"name":"Василий","id":"634_DES_2014","country":"Сочи"}]
И новый массив
 
[{"name":"Иван","id":"1234_SEPT_2014","country":"Москва"}, {"name":"Дмитрий","id":"4757_DES_2015","country":"Питер"}, {"name":"Василий","id":"634_DES_2014","country":"Сочи"}]
На выходе необходимо получить список с номерами элементов (объектов), которых нет в старом варианте. В данном случае [1]. Заранее спасибо.  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				27.06.2015, 23:59
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Новичок на форуме 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 13.11.2014 
					
					
					
						Сообщений: 9
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 Точнее на выходе необходимо получить массив из объектов, которых нет в старом массиве. 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				28.06.2015, 02:21
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 27.05.2010 
					
					
					
						Сообщений: 33,150
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		Winni,
 
function fn(c, b) {
    for (var d = [], e = {}, a = 0; a < c.length; a++) e[c[a].id] = !0;
    for (a = 0; a < b.length; a++) !e[b[a].id] && d.push(b[a]);
    return d
};
var old = [{"name":"Иван","id":"1234_SEPT_2014","country":"Москва"}, {"name":"Василий","id":"634_DES_2014","country":"Сочи"}],
current = [{"name":"Иван","id":"1234_SEPT_2014","country":"Москва"}, {"name":"Дмитрий","id":"4757_DES_2015","country":"Питер"}, {"name":"Василий","id":"634_DES_2014","country":"Сочи"}];
 alert(JSON.stringify(fn(old, current)));
 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				28.06.2015, 14:16
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Новичок на форуме 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 13.11.2014 
					
					
					
						Сообщений: 9
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 Благодарю. 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				30.06.2015, 14:45
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Новичок на форуме 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 13.11.2014 
					
					
					
						Сообщений: 9
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		рони, Подскажи, пожалуйста, ещё в таком моменте. 
Допустим, есть массив
 
var array = [{"name":"Иван","friends":[{"name":"Дмитрий"},{"name":"Сергей"}]}]
Если я обращаюсь к несуществующему свойству объекта или несуществующему объекту, получаю undefined, например
 
console.log(array[0].country)
console.log(array[0].friends[3])
 
Но если я обращаюсь к свойству несуществующего объекта, то выполнение скрипта прерывается и получаю ошибку "Uncaught TypeError: Cannot read property 'image' of undefined", например
  
console.log(array[0].friends[3].image)
 
Как обойти эту ошибку и продолжить выполнение скрипта? Пробовал разного рода условия, не помогает
 
console.log(array[0].friends[3].image || 'def')
  
		
	
		
		
		
		
		
		
		
						  
				
				Последний раз редактировалось Winni, 30.06.2015 в 15:35.
				
				
			
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				30.06.2015, 15:11
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 27.05.2010 
					
					
					
						Сообщений: 33,150
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		Winni, 
 проверяют всю цепочку 
 
var test = var[0] && var[0].friends && var[0].friends[3] && var[0].friends[3].image ? var[0].friends[3].image : 'def'
 ; примерно так  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				30.06.2015, 15:37
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Новичок на форуме 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 13.11.2014 
					
					
					
						Сообщений: 9
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 Спасибо. 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				01.07.2015, 20:18
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Новичок на форуме 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 13.11.2014 
					
					
					
						Сообщений: 9
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		Возможно ли с помощью цикла пройтись по всем объектам массива (пример ниже) и создать переменные (называться должны как свойство 'id'), присвоив им соответствующий объект. 
[{"name":"Иван","id":"SEPT_2014","country":"Москва"}, {"name":"Василий","id":"DES_2015","country":"Сочи"}]
В результате должно получиться
 
var SEPT_2014 = {"name":"Иван","id":"SEPT_2014","country":"Москва"}
 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				01.07.2015, 20:37
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 27.05.2010 
					
					
					
						Сообщений: 33,150
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		Winni, 
можно но переменные будут глобальными
 
window[arr[i]["id"]]= arr[i]
  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				01.07.2015, 21:59
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Новичок на форуме 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 13.11.2014 
					
					
					
						Сообщений: 9
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 Спасибо. Как раз то, что нужно. 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
 
 |  
  |