打印具有相同属性的重复项目

如何获取项目重复属性并将其推送到对象中?打印具有相同属性的重复项目

比如我有:

var object = { "1" :{"ip": 4}, "2" :{"ip": 3}, "3" :{"ip": 4}, "4" :{"ip": 3}} 

我希望有一个对象或数组,其中我将不得不[[1,3], [2,4]]

回答:

我期望有一个物体或阵列,其中我将具有{[1,3],[2,4]}

如果指[[1,3], [2,4]] ,然后用reduceObject.values

演示

var object = { "1" :{"ip": 4}, "2" :{"ip": 3}, "3" :{"ip": 4}, "4" :{"ip": 3}};  

var output = Object.values(Object.keys(object).reduce(function(a, b){

var key = object[ b ].ip; //key to be used for grouping the values

a[ key ] = a[ key ] || [];

a[ key ].push(Number(b));

return a;

} ,{}));

console.log(output.reverse());

回答:

您可以使用reduce()和ES6 Map并返回数组的数组。

var object = { "1" :{"ip": 4}, "2" :{"ip": 3}, "3" :{"ip": 4}, "4" :{"ip": 3}}  

var result = [...Object.keys(object).reduce((r, e) => {

let ip = object[e].ip

if(!r.get(ip)) r.set(ip, [e]);

else r.get(ip).push(e);

return r;

}, new Map).values()];

console.log(result)

回答:

您可以使用array#reduceJSON.stringify价值观为重点,并添加具有相同价值观的关键。

var object = { "1" :{"ip": 4}, "2" :{"ip": 3}, "3" :{"ip": 4}, "4" :{"ip": 3}};  

var result = Object.keys(object).reduce((map,key) => {

var k = JSON.stringify(object[key]);

map[k] = map[k] || [];

map[k].push(key);

return map;

},{});

var output = Object.values(result);

console.log(output);

以上是 打印具有相同属性的重复项目 的全部内容, 来源链接: utcz.com/qa/263690.html

回到顶部