返回collection内对象包含source对象内所有属性,并且值相等。
function where(collection, source) {
var arr = [];
collection.forEach((cur) => {
var has = true;
Object.keys(source).forEach((c) => {
if (source[c] !== cur[c]) {
has = false;
}
});
if (has === true) {
arr.push(cur);
}
});
return arr;
}
where([{ first: "Romeo", last: "Montague" }, { first: "Mercutio", last: null }, { first: "Tybalt", last: "Capulet" }], { last: "Capulet" });
思路:
①用forEach方法从collection对象当中遍历,选出我们所需要的元素。
②使用keys函数提取source对象的所有属性,并跟collection每个元素进行一一对比(属性要对应相同,值也要对应相同)。
下面是具体的步骤思路:
①使用foreach遍历collection对象中的每一个元素(比如{first: “Romeo”, last: “Montague” });
②用keys提取source中的所有属性,以下题为例则是 keys=[‘last’];
③然后再用foreach遍历keys数组中的属性来和collection元素进行对比,满足条件的push进arr中。