Пожалуйста, взгляните на приведенный ниже код.Использование для цикла внутри массива forEach
У меня есть основной массив: NOP и массив TEMP: tempArray
Если массив tempArray содержит элементы, которые находятся в главном NOP массива, затем отметьте его isSelect как истинный.
Однако, если вы запустите код, приведенный ниже, вы увидите только последний элемент tempArray как был изменен на основной массив NOP ....
var nop = [
{title:'blue', isSelect: false },
{title:'red', isSelect: true },
{title:'yellow', isSelect: false },
{title:'black', isSelect: false },
{title:'dark blue', isSelect: false },
{title:'reddish', isSelect: false },
{title:'hello', isSelect: false },
{title:'help', isSelect: false },
{title:'me', isSelect: false }
];
var tempArray = ["blue", "hello", "help"];
tempArray.forEach(function(value){
var index;
for (index = 0; index < nop.length; ++index) {
if (nop[index].title === value){
nop[index].isSelect = true;
console.log('FOR LOOP = TRUE for: ' + value);
}
else {
nop[index].isSelect = false;
}
}
});
console.log(JSON.stringify(nop));
Приведенные выше результаты в:
FOR LOOP = TRUE for: blue
FOR LOOP = TRUE for: hello
FOR LOOP = TRUE for: help
[{"title":"blue","isSelect":false},{"title":"red","isSelect":false},{"title":"yellow","isSelect":false},{"title":"black","isSelect":false},{"title":"dark blue","isSelect":false},{"title":"reddish","isSelect":false},{"title":"hello","isSelect":false},{"title":"help","isSelect":true},{"title":"me","isSelect":false}]
только этот элемент был обновлен: {"title":"help","isSelect":true}
Я хочу, чтобы получить все 3 элемента обновлено:
{"title":"blue","isSelect":true}
{"title":"yellow","isSelect":true}
{"title":"help","isSelect":true}
Что я делаю неправильно?
спасибо.
У каждого был правильный ответ, но небольшое объяснение помогло мне понять. Спасибо. – UTN
Я не думаю, что для этого вам нужны вложенные циклы. Проверьте мой ответ один раз. – void