Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/443.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_Ecmascript 6_Merge_Lodash_Unique - Fatal编程技术网

JavaScript将两个多维数组合并为唯一数组

JavaScript将两个多维数组合并为唯一数组,javascript,ecmascript-6,merge,lodash,unique,Javascript,Ecmascript 6,Merge,Lodash,Unique,我正在尝试对如下所示的数据进行排序: { "Params": [ ["section", "North"], ["monitor", "Single Monitor"], ["section", "North"], ["monitor", "Dual Mon

我正在尝试对如下所示的数据进行排序:

{
    "Params": [
        ["section", "North"],
        ["monitor", "Single Monitor"],
        ["section", "North"],
        ["monitor", "Dual Monitor"]
    ]
}
{
    "section": [
        "North"
    ],
    "monitor": [
        "Single Monitor",
        "Dual Monitor"
    ]
}
变成这样的东西:

{
    "Params": [
        ["section", "North"],
        ["monitor", "Single Monitor"],
        ["section", "North"],
        ["monitor", "Dual Monitor"]
    ]
}
{
    "section": [
        "North"
    ],
    "monitor": [
        "Single Monitor",
        "Dual Monitor"
    ]
}
但我目前遇到了一些问题,我尝试了一些不同的方法,比如在循环中将数组连接在一起,或者甚至使用lodash的uniq函数,但每次我都得到了不想要的结果


提前感谢您的帮助

您可以使用
array聚合数组。reduce

让obj={
“参数”:[
[“节”、“北”],
[“监视器”、“单监视器”],
[“节”、“北”],
[“监视器”、“双监视器”]
]
}
让结果=对象参数减少((acc,cur)=>{
让[key,value]=cur;
如果(!acc[键]){
acc[键]=[];
}
如果(!acc[key]。包括(值)){
acc[键]。推送(值);
}
返回acc;
}, {});

控制台日志(结果)
您可以使用
数组聚合数组。reduce

让obj={
“参数”:[
[“节”、“北”],
[“监视器”、“单监视器”],
[“节”、“北”],
[“监视器”、“双监视器”]
]
}
让结果=对象参数减少((acc,cur)=>{
让[key,value]=cur;
如果(!acc[键]){
acc[键]=[];
}
如果(!acc[key]。包括(值)){
acc[键]。推送(值);
}
返回acc;
}, {});

控制台日志(结果)此处需要执行的操作数。您可以使用
reduce
对关键数据进行分组。因为您只有键值对数组格式,所以在reduce中,我用指示键和值的
[k,v]
对其进行了分解。然后,为了删除重复值,我使用了
Set

var数据={
“参数”:[
[“节”、“北”],
[“监视器”、“单监视器”],
[“节”、“北”],
[“监视器”、“双监视器”]
]
};
var result=data.Params.reduce((a[k,v])=>(a[k]=[…(a[k]|[]),v],a[k]=[…新集合(a[k])],a),{});

控制台日志(结果)此处需要执行的操作数。您可以使用
reduce
对关键数据进行分组。因为您只有键值对数组格式,所以在reduce中,我用指示键和值的
[k,v]
对其进行了分解。然后,为了删除重复值,我使用了
Set

var数据={
“参数”:[
[“节”、“北”],
[“监视器”、“单监视器”],
[“节”、“北”],
[“监视器”、“双监视器”]
]
};
var result=data.Params.reduce((a[k,v])=>(a[k]=[…(a[k]|[]),v],a[k]=[…新集合(a[k])],a),{});

控制台日志(结果)您可以使用
.groupBy()
.head()
(每对中的第一项)对项目进行分组。然后使用
.mapValues()
迭代每个组,将其映射以获取
.last()
项,并使用
.uniq()
仅获取唯一值:

const data={“Params”:[[“区段”、“北部”]、[“监视器”、“单监视器”]、[“区段”、“北部”]、[“监视器”、“双监视器”]};
const result=\映射值(
_.groupBy(data.Params,u.head),//按第一项分组
g=>q.uniq(q.map(g,q.last))//将每个组映射到最后一个项,并获取唯一值
);
控制台日志(结果)

您可以使用
\uu.groupBy()
\uu.head()
(每对中的第一项)对项目进行分组。然后使用
.mapValues()
迭代每个组,将其映射以获取
.last()
项,并使用
.uniq()
仅获取唯一值:

const data={“Params”:[[“区段”、“北部”]、[“监视器”、“单监视器”]、[“区段”、“北部”]、[“监视器”、“双监视器”]};
const result=\映射值(
_.groupBy(data.Params,u.head),//按第一项分组
g=>q.uniq(q.map(g,q.last))//将每个组映射到最后一个项,并获取唯一值
);
控制台日志(结果)
您可以按如下方式将方法转换为函数
让obj={
“参数”:[
[“节”、“北”],
[“监视器”、“单监视器”],
[“节”、“北”],
[“监视器”、“双监视器”]
]
};
常数res=对象参数reduce((acc,[key,val])=>{
acc[键]=acc[键]| |[];
如果(!acc[key]。包括(val)){
acc[键]。推送(val);
}
返回acc;
}, {});
控制台日志(res)您可以按如下方式将方法转换为函数
让obj={
“参数”:[
[“节”、“北”],
[“监视器”、“单监视器”],
[“节”、“北”],
[“监视器”、“双监视器”]
]
};
常数res=对象参数reduce((acc,[key,val])=>{
acc[键]=acc[键]| |[];
如果(!acc[key]。包括(val)){
acc[键]。推送(val);
}
返回acc;
}, {});

控制台日志(res)“我尝试了一些不同的方法…”-请添加您最有希望的方法,我们将尝试帮助您。“我尝试了一些不同的方法…”-请添加您最有希望的方法,我们将尝试帮助您。为什么
查找单个值<代码>包含
会更好。为什么要查找单个值<代码>包含
会更好。