目标是查看第一个参数是否具有与第二个参数相同的键/值对。这是我想出来的,但它不起作用。我已经坚持了很长时间。如果你在没有给我解决方案的情况下指出逻辑错误会有所帮助。
function whatIsInAName(collection, source) {
for(i = 0; i < collection.length; i++) {
if(Object.keys(collection[i]) && Object.values(collection[i]) === Object.keys(source) && Object.values(source)) {
return collection[i];
}
}
}
答案 0 :(得分:0)
如果源中只有一个键,您可以通过检查实际项的值并使用给定值source
来获取它并执行查找。然后返回第一个找到的对象。
function whatIsInAName(collection, source) {
var key = Object.keys(source)[0];
return collection.find(o => o[key] === source[key]);
}
console.log(whatIsInAName([{ first: "Romeo", last: "Montague" }, { first: "Mercutio", last: null }, { first: "Tybalt", last: "Capulet" }], { last: "Montague" }));
如果有多个密钥,您可以检查所有密钥的相同性。
function whatIsInAName(collection, source) {
var keys = Object.keys(source);
return collection.find(o => keys.every(k => o[k] === source[k]));
}
console.log(whatIsInAName([{ first: "Romeo", last: "Montague" }, { first: "Mercutio", last: null }, { first: "Tybalt", last: "Capulet" }], { first: "Romeo", last: "Montague" }));