ArtMavir
@ArtMavir

Как добавить к массиву объектов новый ключ-значение?

Есть такой код:
$scope.messages = data;
			for (var i = 0; i < $scope.messages.response.length; ++i) {
				if ($scope.messages.response[i].type == 'location') {
					var strings = $scope.messages.response[i].content.split(' ');
					var lat1 = strings[0],
						lat2 = strings[1];
					$http.get('http://maps.googleapis.com/maps/api/geocode/json?latlng='+lat1+','+lat2+'&sensor=true_or_false')
					.success(function(data)
					{
						$ionicLoading.hide();
						$scope.mapAdd = data;
						$scope.messages.response[i].formatted_address = $scope.mapAdd.results[0].formatted_address; вот здесь нужно добавить новое значение с ключом formatted_address, но если делать так, то  TypeError: Cannot set property 'formatted_address' of undefined
						console.log($scope.messages.response[i].formatted_address);
						console.log($scope.mapAdd.results[0].formatted_address);
					});
				};
			};


Подскажите как реализовать. Спасибо.

2015-01-29_20-07-48.png
  • Вопрос задан
  • 2399 просмотров
Решения вопроса 1
@vsvladimir
Тут наверное проблема с переменной i. Результат $http.get приходит уже после завершения цикла. i=16 и $scope.messages.response[16] не существует. Нужно исходные значения i где-то запомнить. Советую почитать про замыкания в JavaScript, как одно из решений.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@hedint
Web разработчик
Если вам просто нужно добавить элемент в начало массива, используйте unshift.
Если нет - то вопрос непонятен.
Ответ написан
@sdo
ну самое простое (не вижу у вас в коде $ а других библиотек не знаю, может у вас там есть map) это (также не вкурил, к какому именно объекту.. и в чем сложность вопроса?)
for(var i=0;i<MyObject.response.length;i++){
    MyObject.response[i]['formatted_address ']= $scope.mapAdd.results[0].formatted_address;
}


У меня четкое ощущение что я не понимаю, а задача сложнее.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы