gpt4 book ai didi

javascript - 如何根据对象列表的一个或两个键来比较和分离对象列表的数组

转载 作者:行者123 更新时间:2023-12-03 08:56:45 26 4
gpt4 key购买 nike

嗨,我正在尝试找到一种方法将数组与它自己的数组进行比较并对它们进行分组。

我有一个数组组

group= [{name:'Anandapriyan',age:21,home : {door:1,street:'xyz'}, currentAddress : {door:2,street:'abc'}},
{name:'Mano' ,age:27,home : {door:1,street:'xyz'}, currentAddress : {door:2,street:'abc'}},
{name:'James' ,age:27,home : {door:8,street:'pqr'}, currentAddress : {door:2,street:'abc'}},
{name:'Anandabalan' ,age:27,home : {door:7,street:'asd'}, currentAddress : {door:9,street:'try'}}]

我需要比较这个数组并形成一个像这样的新数组

newGroup = [[{name:'Anandapriyan',age:21,home : {door:1,street:'xyz'}, currentAddress : {door:2,street:'abc'}},
{name:'Mano' ,age:27,home : {door:1,street:'xyz'}, currentAddress : {door:2,street:'abc'}}],
[{name:'James' ,age:27,home : {door:8,street:'pqr'}, currentAddress : {door:2,street:'abc'}}],
[{name:'Anandabalan' ,age:27,home : {door:7,street:'asd'}, currentAddress : {door:9,street:'try'}}]]

在这里,我将数组与其自己的元素进行比较,并根据与我正在比较的键值匹配的元素对它们进行分组我用来比较的字段是组数组的 home 和 currentAddress 值(对象的)的每个元素。可以很容易地比较纯字符串或整数并将它们分组如下

 var result = _.chain(group)
.groupBy("name" && "age")
.pairs()
.map(function (currentItem) {
return _.object(_.zip(["compared key","newGroup"], currentItem));
}).value();
console.log(result)

我的样本code我使用了 lodash 库

最佳答案

_.groupBy还可以接收 iteratee 函数,该函数创建要分组的项目的标识 ( fiddle ):

var groupBy = ['currentAddress', 'home']; // props to group by

var result = _(group)
.groupBy(function (item) {
return groupBy.reduce(function(str, prop) { // concat all prop values into a string for the _.groupBy to compare
var propValue = item[prop];

str += str + _.isObject(propValue) ? JSON.stringify(propValue) : propValue; // stringify objects
return str;
}, '');
}).map(function (item) {
return item; // just return the array
})
.value();

关于javascript - 如何根据对象列表的一个或两个键来比较和分离对象列表的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32458846/

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