需要将多个数组组合为字符串类型的数组对象

想问下这种数组
[['yunnan','asdas'],['yunnan','dasdasd'],['hunan','asdas'],['hunan','dasdasd'],['guizhou','asdas'],['guizhou',dasdasd],['guangxi','ss'],['guangxi','ass'],['guangxi','bss']]
数组中 ['yunnan','asdas'] 代表选择yunnan节点下的子元素

怎么组合成 [{"yunnan":"asdas,dasdasd"},{"hunan":"asdas,dasdasd"},{"guizhou":"asdas,dasdasd"},{"guangxi":"ss,ass,bss"}]

阅读 1.1k
2 个回答

image.png

先聚合起来。然后再输出成你要的数据。

image.png

Object.entries(([['yunnan','asdas'],['yunnan','dasdasd'],['hunan','asdas'],['hunan','dasdasd'],['guizhou','asdas'],['guizhou','dasdasd'],['guangxi','ss'],['guangxi','ass'],['guangxi','bss']].reduce((s, n)=>{
    let item = s.hash[n[0]];
    if(item){
        item.push(n[1])
    }else{
        s.list.push(s.hash[n[0]] = [n[1]]);
    }
    return s 
},{
    hash: {},
    list: []
}).hash)).map(v=>({[v[0]]:v[1].join()}))
const items = [
    ["yunnan", "asdas"],
    ["yunnan", "dasdasd"],
    ["hunan", "asdas"],
    ["hunan", "dasdasd"],
    ["guizhou", "asdas"],
    ["guizhou", "dasdasd"],
    ["guangxi", "ss"],
    ["guangxi", "ass"],
    ["guangxi", "bss"],
];

const hash = {};
const result = [];
for (const [key, value] of items) {
    if (hash[key]) hash[key][key] += `,${value}`;
    else result.push(hash[key] = { [key]: value });
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题