我有一个带有多个(动态)JSON对象的JSON数组。我需要比较这些对象并选择在所有对象中具有相同值的键。我的JSON看起来像,
[
{
"CreateAccountName":"Joseph",
"CreateDateTime":"0001-01-01T00:00:00",
"Description":"Utilization of services",
"Type":2,
"Id":1000000001,
"Count":1,
"ModifiedAccountName":"",
"ModifiedDateTime":"2016-10-04T10:16:40.5190025",
"Name":"Utilization of services",
"CardCount":0,
"Target":95,
"UniversalId":"SDFOPIJ-SDFGLKJ-ER234-234LF",
"AccountId":0,
"AccountName":"Joseph"
},
{
"CreateAccountName":"Joseph",
"CreateDateTime":"0001-01-01T00:00:00",
"Description":"Utilization of Food",
"Type":2,
"Id":1000000001,
"Count":1,
"ModifiedAccountName":"",
"ModifiedDateTime":"2016-10-04T10:16:40.5190025",
"Name":"Utilization of Food",
"CardCount":0,
"Target":95,
"UniversalId":"SDFOPIJ-SDFGLKJ-ER234-234LF",
"AccountId":0,
"AccountName":"Joseph"
},
{
"CreateAccountName":"Joseph",
"CreateDateTime":"0001-01-01T00:00:00",
"Description":"Utilization of services",
"Type":2,
"Id":1000000001,
"Count":1,
"ModifiedAccountName":"",
"ModifiedDateTime":"2016-10-04T10:16:40.5190025",
"Name":"Utilization of services",
"CardCount":0,
"Target":95,
"UniversalId":"SDFOPIJ-SDFGLKJ-ER234-234LF",
"AccountId":0,
"AccountName":"Joseph"
}
]
我想获得具有相同价值的钥匙。例如,CreateAccountName。在所有对象中它具有相同的值。
棘手的情况是,密钥本身是动态的。我无法对密钥进行硬编码并进行比较。密钥名称可能会更改,或者可能会出现另一组密钥。我正在寻找一种通用的解决方案来比较并获取对象的“交集”。
你可以做到这一点 Array.reduce()
var json = [
{
"CreateAccountName":"Joseph",
"CreateDateTime":"0001-01-01T00:00:00",
"Description":"Utilization of services",
"Type":2,
"Id":1000000001,
"Count":1,
"ModifiedAccountName":"",
"ModifiedDateTime":"2016-10-04T10:16:40.5190025",
"Name":"Utilization of services",
"CardCount":0,
"Target":95,
"UniversalId":"SDFOPIJ-SDFGLKJ-ER234-234LF",
"AccountId":0,
"AccountName":"Joseph"
},
{
"CreateAccountName":"Joseph",
"CreateDateTime":"0001-01-01T00:00:00",
"Description":"Utilization of Food",
"Type":2,
"Id":1000000001,
"Count":1,
"ModifiedAccountName":"",
"ModifiedDateTime":"2016-10-04T10:16:40.5190025",
"Name":"Utilization of Food",
"CardCount":0,
"Target":95,
"UniversalId":"SDFOPIJ-SDFGLKJ-ER234-234LF",
"AccountId":0,
"AccountName":"Joseph"
},
{
"CreateAccountName":"Joseph",
"CreateDateTime":"0001-01-01T00:00:00",
"Description":"Utilization of services",
"Type":2,
"Id":1000000001,
"Count":1,
"ModifiedAccountName":"",
"ModifiedDateTime":"2016-10-04T10:16:40.5190025",
"Name":"Utilization of services",
"CardCount":0,
"Target":95,
"UniversalId":"SDFOPIJ-SDFGLKJ-ER234-234LF",
"AccountId":0,
"AccountName":"Joseph"
}
];
var intersection = json.reduce(function(result, item) {
Object.keys(result).forEach(function(key) {
if(! item.hasOwnProperty(key) || item[key] !== result[key]) delete result[key];
});
return result;
});
console.log(intersection)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句