Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在数组javascript中对相似的对象值进行分组_Javascript_Arrays_Json - Fatal编程技术网

在数组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