对数组中的数据操作

let ary = [{

        fileName: "文档1",
        nodeId: "1133275924701949952",
    },
    {
        fileName: "文档2",
        nodeId: "1133275743956807681",
    }, {
        fileName: "文档3",
        nodeId: "1133275683449434112",
    }, {
        fileName: "文档4",
        nodeId: "1133275743956807681",
    }, {
        fileName: "文档5",
        nodeId: "1133275683449434112",
    },
    {
        fileName: "文档6",
        nodeId: "1133275924701949952",
    }
]
 // 将相同id的文件名以“,”拼接起来,放在数组中的一项得到=>["文档1,文档6","文档2,文档4","文档3,文档5"],怎么写啊大佬们
阅读 1.2k
2 个回答

本质流程是
分组 => 映射 => 拼接

参考 https://blog.rxliuli.com/p/fc...

具体场景解决代码

Array.from(groupBy(ary, ({ nodeId }) => nodeId))
  .flatMap(([_k, v]) => v)
  .map(({ fileName }) => fileName)
  .join()
吾辈推荐解决这类问题时不要只看业务,找出其中通用的东西才更为有趣。。。
function transformData (ary) {
     const tempObj = ary.reduce((prev, current) => {
        prev[current.nodeId] = prev[current.nodeId] || [];
        prev[current.nodeId].push(current.fileName);
        return prev;
    },{});
    const result = [];
    for (let nodeId in tempObj) {
        const fileName = tempObj[nodeId];
        result.push(fileName.join(','));
    }
    return result;
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题