Почему этот код не работает? Я пытаюсь пропустить коллекции объектов и определить, соответствуют ли значения свойств источнику. Если значения свойств совпадают, я хочу их вставить в массив. Когда i console.log в цикле for in, я становлюсь неопределенным, и все, кажется, попадает в массив. Вот код:для петли плюс для петли
function where(collection, source) {
var arr = [];
// What's in a name?
for(var i =0; i < collection.length; i++){
for(var key in collection){
if (collection[i][key] === source[key]) {
arr.push(collection[i]);
}
}
}
}
return arr;
}
where([{ first: 'Romeo', last: 'Montague' }, { first: 'Mercutio', last: null }, { first: 'Tybalt', last: 'Capulet' }], { last: 'Capulet' });
Я думаю, что это должно работать, но я не уверен, что происходит с кодом. Как я могу исправить код?
Когда я просто пытаюсь проверить, если значения могут быть записаны им получать неопределенными, не знаю, почему:
function where(collection, source) {
var arr = [];
// What's in a name?
for(var i =0; i < collection.length; i++){
for(var key in collection){
console.log("collection[i][key]:",collection[i][key]);
console.log("source[key]:", source[key]);
}
}
return arr;
}
Обе ваши внутренние и внешние петли перебирать то же итерация. – zerkms