gpt4 book ai didi

javascript - 如何使用JS检查一个对象是否存在于另一个对象中

转载 作者:行者123 更新时间:2023-11-30 14:55:22 25 4
gpt4 key购买 nike

假设我有一个对象数组

var arr= [{name:'John', lastName:'Smith', age:25}, {name:'Steve', lastName:'Johnson', age:56}];
var obj1 ={name:'John', lastName:'Smith'};

如何使用 JS 检查一个对象是否存在于另一个对象中?

嵌套循环能解决问题吗?第一个循环遍历数组内的对象,第二个循环遍历对象内的键/值对并将它们与 obj1 键/值对进行比较?有一个更好的方法吗 ?或者我应该使用 3 个循环?

该函数应返回包含 obj1 的 arr 中的 obj el。例如:应返回 arr[0],因为它包含 obj1

function objInArr(srcArr, obj) {

var arr = [];

//var srcLength = 0;
//var sourceSize = Object.keys(source).length; // The length of the source obj
srcArr.forEach(function(el) {

el.forEach(function(objEl){
obj.forEach(function(sourceEl){
if( sourceEl === objEl) { arr.push(sourceEl); }
});
});
});

return arr;
}

最佳答案

您可以使用 Arry#find() 的组合 Array#some() 遍历数组对象并查找是否存在具有相同键和值的对象的方法:

var exists = arr.find(function(o){
return Object.keys(o).some(function(k){
return !Object.keys(obj1).indexOf(k)>-1 || o[k]!=obj1[k];
});
});

如果它存在,它会返回一个对象,如果你想返回一个boolean,你可以用一个改变.find() .some().

这里的语句 !Object.keys(obj1).indexOf(k)>-1 || o[k]!=obj1[k] 如果一个对象没有迭代的 key 或者它的 value 不一样,将退出。

演示:

var arr= [{name:'John', lastName:'Smith', age:25}, {name:'Steve', lastName:'Johnson', age:56}];
var obj1 ={name:'John', lastName:'Smith'};

var exists = arr.find(function(o){
return Object.keys(o).some(function(k){
return !Object.keys(obj1).indexOf(k)>-1 || o[k]!=obj1[k];
});
});

console.log(exists);

关于javascript - 如何使用JS检查一个对象是否存在于另一个对象中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47382904/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com