在数组javascript中对相似的对象值进行分组
我有如下初始数据:在数组javascript中对相似的对象值进行分组,javascript,arrays,json,Javascript,Arrays,Json,我有如下初始数据: [ { "ru":"R401","area":"RFCC","unit":"OFFSITE","tot":1 }, { "ru":"R401","area":"RFCC","unit":"OFFSITE","tot":1 }, { "ru":"R401","area":"RFCC","unit":"OFFSITE","tot":1 }, { "ru":"R401","area":"
[
{
"ru":"R401","area":"RFCC","unit":"OFFSITE","tot":1
}, {
"ru":"R401","area":"RFCC","unit":"OFFSITE","tot":1
}, {
"ru":"R401","area":"RFCC","unit":"OFFSITE","tot":1
}, {
"ru":"R401","area":"RFCC","unit":"RCU","tot":1
}
]
[
{
"ru":"R401",
"tot":[1, 1, 1, 1],
"unit":["OFFSITE","OFFSITE","OFFSITE","RCU"]
}
]
[
{
"ru":"R401",
"tot":[1, 1],
"unit":["OFFSITE","RCU"]
}
]
如果某些键相同,我想在对象中推送数组,结果如下:
[
{
"ru":"R401","area":"RFCC","unit":"OFFSITE","tot":1
}, {
"ru":"R401","area":"RFCC","unit":"OFFSITE","tot":1
}, {
"ru":"R401","area":"RFCC","unit":"OFFSITE","tot":1
}, {
"ru":"R401","area":"RFCC","unit":"RCU","tot":1
}
]
[
{
"ru":"R401",
"tot":[1, 1, 1, 1],
"unit":["OFFSITE","OFFSITE","OFFSITE","RCU"]
}
]
[
{
"ru":"R401",
"tot":[1, 1],
"unit":["OFFSITE","RCU"]
}
]
然后,我想将对象“tot”和“unit”分组,然后将其放入一个新数组,如果键“tot”和“unit”的对应值相同,但我的逻辑不好
我希望输出是这样的:
[
{
"ru":"R401","area":"RFCC","unit":"OFFSITE","tot":1
}, {
"ru":"R401","area":"RFCC","unit":"OFFSITE","tot":1
}, {
"ru":"R401","area":"RFCC","unit":"OFFSITE","tot":1
}, {
"ru":"R401","area":"RFCC","unit":"RCU","tot":1
}
]
[
{
"ru":"R401",
"tot":[1, 1, 1, 1],
"unit":["OFFSITE","OFFSITE","OFFSITE","RCU"]
}
]
[
{
"ru":"R401",
"tot":[1, 1],
"unit":["OFFSITE","RCU"]
}
]
我该怎么做?
提前感谢。您可以使用a和两个数组的相应值,假设它们具有相同的长度
var object={ru:“R401”,tot:[1,1,1,1],单位:[“场外”、“场外”、“场外”、“RCU”],
唯一=新设置,
i=object.tot.length,
json;
而(我--){
json=json.stringify([object.tot[i],object.unit[i]]);
if(unique.has(json)){
对象总拼接(i,1);
对象.单位.拼接(i,1);
持续
}
添加(json);
}
console.log(对象)代码>正确,使用Set是正确的选择
我会让它更通用:
const源=[
{
“ru”:“R401”,
“tot”:[1,1,1,1],
“单位”:[“场外”、“场外”、“场外”、“RCU”]
}];
source.map(el=>{
Object.entries(el.forEach)(en=>{
if(Array.isArray(el[en[0]]))
el[en[0]]=Array.from(新集合(el[en[0]]);
});
});
console.log(源代码)代码>到目前为止您尝试过的任何东西?您可以尝试为单元设置<代码>设置
。为什么[1,1]
而不是[1]
?如果将它们分组,为什么在tot
中有2个1
?