1 回答

TA贡献1719条经验 获得超6个赞
放入第.findIndex 一个,并在其中检查其中.every一个Object.keys匹配项。
请注意,您当前的对象有name: 'Bill'但数组有name: 'bill'- 值应该匹配,区分大小写很重要(除非您想忽略它,在这种情况下,您必须首先调用toLowerCase()两个值)。
let obj = {
name: 'bill',
phone: '8562456871',
email: 'bill@email.com'
};
let arrayObj = [{
street: 'wardcircle',
city: 'Brentwood'
}, {
name: 'wan',
email: 'wan@test.com'
}, {
name: 'bill',
phone: '8562456871',
email: 'bill@email.com'
}];
const getIndex = (findObj, array) => (
array.findIndex(obj => (
Object.entries(findObj).every(([key, val]) => obj[key] === val)
))
);
console.log(getIndex(obj, arrayObj));
如果您还想确保找到的对象没有任何不在 中的属性findObj,请检查两者上的键数是否也相同:
let obj = {
name: 'bill',
phone: '8562456871',
email: 'bill@email.com'
};
let arrayObj = [{
street: 'wardcircle',
city: 'Brentwood'
}, {
name: 'wan',
email: 'wan@test.com'
}, {
name: 'bill',
phone: '8562456871',
email: 'bill@email.com'
}];
const getIndex = (findObj, array) => (
array.findIndex(obj => (
Object.keys(obj).length === Object.keys(findObj).length &&
Object.entries(findObj).every(([key, val]) => obj[key] === val)
))
);
console.log(getIndex(obj, arrayObj));
添加回答
举报