[英]How to merge two object arrays with key/value pair in javascript into one array
[英]How to compare two array object but any one of the array object does not having key pair
如果两个对象中的任何一个没有密钥对,则比较两个对象。
var itemA= [{"name": "saran", "address":"chennai"},
{"name": "elango", "address":"chennai"},
{"name": "kala", "address": "chennai"}];
var itemB= [{"name": "saran", "address":"chennai"},
{"name": "elango", "address":"chennai"}];
我编写了以下代码来比较两个对象,
function compareJSON(itemA, itemB) {
for(var prop in itemA) {
if(itemB.hasOwnProperty(prop)) {
switch(typeof(itemA[prop])) {
case "object":
compareJSON(itemA[prop], itemB[prop]);
break;
default:
if(itemA[prop] !== itemB[prop]) {
}
break;
}
}
}
}
在这里我有两个对象,我需要比较两个对象。 我曾经使用for循环比较具有hasOwnProperty()方法的两个对象。 该道具具有itemA对象,如果与之不同,我将使用itemB对象进行检查。
这里的问题是无法比较itemA第三个值,因为在itemB中没有第三个元素,因此无法比较。
看一下这个。
如果不相等,则可以编写自定义修改/逻辑。
var itemA= [{"name": "saran", "address":"chennai"}, {"name": "elango", "address":"chennai"}, {"name": "kala", "address": "chennai"}]; var itemB= [{"name": "saran", "address":"chennai"}, {"name": "elango", "address":"chennai"}]; let keysA = Object.keys(itemA); let keysB = Object.keys(itemB); if(keysA.length === keysB.length) { let flag = true; keysA.map( a => { if(!keysB.includes(a)) { flag = false; } }) flag ? alert('Equal') : alert('Not equal'); } else { alert('Not equal'); }
可以组合使用Array.prototype.reduce()
, JSON.stringify()
和Array.prototype.includes()
来查找Arrays
A
和B
之间的差异。
// A. const A = [ {name: "saran", address:"chennai"}, {name: "elango", address:"chennai"}, {name: "kala", address: "chennai"} ] // B. const B = [ {name: "saran", address:"chennai"}, {name: "elango", address:"chennai"} ] // Differences. const differences = A.reduce((differences, object) => (!JSON.stringify(B).includes(JSON.stringify(object)) && [...differences, object] || differences), []) // Log. console.log(differences)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.