for循环加上for in循环
for loop plus for in loop
为什么这段代码不起作用?我正在尝试遍历对象集合并检测 属性 值是否与源匹配。如果 属性 值匹配,我想将它们推入数组。当我在 for in 循环中 console.log 时,我变得不确定,似乎所有内容都被推入了数组。这是代码:
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;
}
你只需要在第二个 for 循环中添加一个 [i] (
for(集合中的 var 键 [i])
function where(collection, source) {
var arr = [];
// What's in a name?
for(var i =0; i < collection.length; i++){
for(var key in collection[i]){
if(collection[i][key] === source[key])
{
arr.push(collection[i]);
}
}
}
return
为什么这段代码不起作用?我正在尝试遍历对象集合并检测 属性 值是否与源匹配。如果 属性 值匹配,我想将它们推入数组。当我在 for in 循环中 console.log 时,我变得不确定,似乎所有内容都被推入了数组。这是代码:
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;
}
你只需要在第二个 for 循环中添加一个 [i] (
for(集合中的 var 键 [i])
function where(collection, source) {
var arr = [];
// What's in a name?
for(var i =0; i < collection.length; i++){
for(var key in collection[i]){
if(collection[i][key] === source[key])
{
arr.push(collection[i]);
}
}
}
return