У меня есть этот сложный массив объектов (я покажу только те узлы, необходимые для объяснения проблемы):Javascript массив объектов, не изменяя
var arr = [
{
json: {
doc: {
id: 1,
atualizacao:{
dc: false
}
}
}
}
]
angular.forEach(arr, function(value, key) {
if(value.json.doc.id == 1){
value.json.doc.atualizacao.dc = true;
}
});
Когда я делаю это Foreach, он изменяет значение из 'dc' узла массива в определенной позиции. но в конце forEach
массив arr
все еще не изменился.
Я положил много console.logs и выяснил, что:
-
если я войти в переменном: value.json.doc.atualizacao.dc - ПОЯВЛЕНИЕ 'истинного'
-
; если я войти в переменном: value.json.doc.atualizacao - ПОЯВЛЕНИЕ 'dc = истинный'
-
если я войти в переменном: value.json.doc - ПОЯВЛЕНИЕ «atualizacao.dc = верно '
-
если я войти в переменную: value.json - ПОЯВЛЕНИИ 'doc.atualizacao.dc = ложь'
-
если я регистрировать значение переменной - ПОЯВЛЕНИИ 'json.doc.atualizacao.dc = ложь'
Можете ли вы дать нам [Plunker] (http://plnkr.co/), показывающий ошибку? Это очень поможет в попытке дублировать проблему. –
Это должно работать нормально, просто протестировать его в консоли (используя 'arr.forEach' вместо' angular.forEach') – konkked
см. [Почему используется «для ... в» с итерацией массива плохая идея?] (Http: //stackoverflow.com/questions/500504/why-is-using-for-in-with-array-iteration-a-bad-idea) –