javascript - JavaScript 将两个多维数组合并为唯一数组
问题描述
我正在尝试对如下所示的数据进行排序:
{
"Params": [
["section", "North"],
["monitor", "Single Monitor"],
["section", "North"],
["monitor", "Dual Monitor"]
]
}
变成这样的东西:
{
"section": [
"North"
],
"monitor": [
"Single Monitor",
"Dual Monitor"
]
}
但是我目前遇到了问题,我尝试了一些不同的方法,例如在一个循环中将数组连接在一起,或者甚至使用 lodash 的 uniq 函数,但每次我得到一个不想要的结果。
提前感谢您的帮助
解决方案
您可以使用以下方法聚合您的数组数组array.reduce
:
let obj = {
"Params": [
["section", "North"],
["monitor", "Single Monitor"],
["section", "North"],
["monitor", "Dual Monitor"]
]
}
let result = obj.Params.reduce((acc,cur) => {
let [key,value] = cur;
if(!acc[key]){
acc[key] = [];
}
if(!acc[key].includes(value)){
acc[key].push(value);
}
return acc;
}, {});
console.log(result);
推荐阅读
- vba - ComboBox 输入框导致重新选择范围
- javascript - NodeJs 表达错误中间件解析
- java - 将 Rally Rest API 添加到 Pom 后,Testng 测试未执行
- android - 在列表视图中创建列表视图
- multithreading - 为什么在对实例变量进行同步时,此代码会给出 IllegalMonitor 异常
- java - Android 中的膨胀布局
- azure-devops - 如果任务需要 SYSTEM_ACCESSTOKEN,VSTS 会验证并警告用户
- jwt - 依赖 cookie 或令牌时是否必须使用 https
- sqlite - 如何从 sqlite 访问 csv 文件?
- javascript - reactjs:由于未定义/错误而无法映射状态