js 根据id修改以下数据格式为新数组

const list = [{ id: '1', name: '苹果' }, { id: '2', name: '香蕉' }, { id: '3', name: '梨子' }]

原数据格式↓

const data = [['1', '2', '3'], ['1'], ['1', '2']]

理想效果↓

 const newData = [{ name: '苹果,香蕉,梨子', id: '1,2,3' },
                  { name: '苹果', id: '1' },
                  { name: '苹果,香蕉', id: '1,2' }]

data就是选中的id,id对应的name在list里面,id和name多个的话用逗号隔开

请教各位大神该如何操作,小弟在这里先谢谢各位大神的解答了,感激不尽!

阅读 2.4k
2 个回答
const list = [
      { id: "1", name: "苹果" },
      { id: "2", name: "香蕉" },
      { id: "3", name: "梨子" }
    ];
    const data = [["1", "2", "3"], ["1"], ["1", "2"]];
    const result = data.map(item => {
      return item.reduce((a, b) => {
        const { name } = list.find(r => r.id == b) || {};
        return {
          name: a.name ? `${a.name},${name}` : name,
          id: a.id ? `${a.id},${b}` : b
        };
      }, {});
    });
    console.log(result);
    //转回data
    const res = result.map(item => item.id.split(","));
    console.log(res);
  let ll = data.map(item => {
      var str = "";
      item.map((elemnt, index) => {
        item = str += "," + elemnt;
      });
      return item.slice(1, item.length);
    });
    ll.forEach((item, index) => {
      newData[index].id = item;
    });
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题