Javascript 如何使用JS检查一个对象是否存在于另一个对象中
假设我有一个对象数组Javascript 如何使用JS检查一个对象是否存在于另一个对象中,javascript,Javascript,假设我有一个对象数组 var arr= [{name:'John', lastName:'Smith', age:25}, {name:'Steve', lastName:'Johnson', age:56}]; var obj1 ={name:'John', lastName:'Smith'}; 如何使用JS检查一个对象是否存在于另一个对象中 嵌套循环会起作用吗?第一个循环遍历数组中的对象,第二个循环遍历对象中的键/值对,并将它们与obj1键/值对进行比较?有更好的方法吗?或者我应该使用3个
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;
}
您可以结合使用和方法在数组对象上循环,并查找是否存在具有相同键和值的对象:
var exists = arr.find(function(o){
return Object.keys(o).some(function(k){
return !Object.keys(obj1).indexOf(k)>-1 || o[k]!=obj1[k];
});
});
它将返回一个对象
,如果它存在,如果您想返回一个布尔值
,您可以使用.some()
更改.find()
下面是语句!Object.keys(obj1).indexOf(k)>-1 | | o[k]=如果对象没有迭代的键
或其值不相同,obj1[k]
将退出
演示:
var arr=[{姓名:'John',姓氏:'Smith',年龄:25},{姓名:'Steve',姓氏:'Johnson',年龄:56}];
var obj1={name:'John',lastName:'Smith'};
var exists=arr.find(函数(o){
返回Object.keys(o).some(函数(k){
return!Object.keys(obj1).indexOf(k)>-1 | | o[k]!=obj1[k];
});
});
console.log(存在)代码>
您现在可以这样使用它:
const arr= [{name:'John', lastName:'Smith', age:25}, {name:'Steve', lastName:'Johnson', age:56}];
const obj1 ={name:'John', lastName:'Smith'};
const containing = arr.find((object) => partialContains(object, obj1));
如果包含的未定义,则未找到任何内容,否则,将返回包含obj1
的对象
const arr= [{name:'John', lastName:'Smith', age:25}, {name:'Steve', lastName:'Johnson', age:56}];
const obj1 ={name:'John', lastName:'Smith'};
const containing = arr.find((object) => partialContains(object, obj1));