gpt4 book ai didi

javascript - jQuery:根据另一个属性值对对象属性进行分组

转载 作者:行者123 更新时间:2023-12-02 14:51:02 24 4
gpt4 key购买 nike

我有一个如下所示的对象数组。

[
{"rel_id": 1,"forward_flag": true,"asset_id":5,},
{"rel_id": 1,"forward_flag": true,"asset_id":8},
{"rel_id": 1,"forward_flag": false,"asset_id":3},
{"rel_id": 2,"forward_flag": true,"asset_id":5,},
{"rel_id": 2,"forward_flag": true,"asset_id":7,},
{"rel_id": 2,"forward_flag": false,"asset_id":9,}
]

我尝试根据属性 rel_idforward_flag 对对象进行分组。对于那些 rel_idforward_flag 相同的对象,我尝试创建一个 asset_id 值数组并创建一个新对象。

因此处理后的最终结果将如下所示

[
{"rel_id":1,"forward_flag":true,"asset_id":[5,8]},
{"rel_id":1,"forward_flag":false,asset_id:[3]},
...
]

我尝试使用像这样的 jQuery 来实现相同的目的。

preData.forEach(function(item){
var first = item;
preData.forEach(function(compare){
if(compare.rel_id != first.rel_id || compare.forwardFlag!= first.forwardFlag || compare.asset_id != first.assetid) //to make sure same item is not compared
{
if(compare.rel_id == first.rel_id && compare.forwardFlag == first.forwardFlag)
{
//do something here
}
}
})

})

其中 preData 是对象数组。我现在陷入困境,不知道下一步该做什么。有没有更简单的方法可以实现这一目标?

最佳答案

您需要为此创建另一个对象,

使用您的代码

 var newArray = [];
var rels = {};
preData.forEach(function(item){
var relForward = item.rel_id + "===" + item.forwardFlag;
if ( !rels[ relForward ] )
{
rels[ relForward ] = [];
}
rels[ relForward ].push(item);
});

现在迭代rels以填充最终输出newArray

 newArray = Object.keys( rels ).map(function(key){
var item = rels[key][0];
var assets = rels[key].map(function(value){ return value.asset_id; });
return { rel_id : item.rel_id, forward_flag: item.forward_flag, asset_id: assets };
});

关于javascript - jQuery:根据另一个属性值对对象属性进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36196602/

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