Vue 如何将获取到的数组对象 合并组成新数组对象?

原素组对象:

[
    {
        "title": "标题",
        "comps": [
            {
                "id": 88,
                "name": "bb",
                "nameEn": "",
                "modes": "INDICATECARD",
            },
            {
                "id": 88,
                "name": "bb",
                "nameEn": "",
                "modes": "INDICATECARD",
            }
        ]
    },
    {
        "title": "标题",
        "comps": [
            {
                "id": 83,
                "name": "阿萨德",
                "nameEn": "ad",
                "modes": "CHARTPIE",
            }
        ]
    },
    {
        "title": "标题",
        "comps": [
            {
                "id": 85,
                "name": "测试001",
                "nameEn": "test0011",
                "modes": "CHARTPIE",
            }
        ]
    },
    {
        "title": "标题",
        "comps": [],
        "guid": 1658455624480
    }
]

需要实现成这样:

[
    {
        "title": "标题",
        "compAryIds": [
            88,
            88
        ]
    },
    {
        "title": "标题",
        "compAryIds": [
            83
        ]
    },
    {
        "title": "标题",
        "compAryIds": [
            85
        ]
    },
    {
        "title": "标题",
        "compAryIds": [],
    }
]

我的实现方法:

saveEdit() {
  const compIds = [];
  const arr = [];
  this.floors.map((floor) => {
    floor.comps.map((comp) => {
      arr.push(comp.id);
      let obj = {};
      obj.title = floor.title;
      obj.compAryIds = arr;
      compIds.push(obj);
      console.log(compIds);
    });
  });
  createRowData(compIds).then(() => {
    this.$message.success('保存成功');
  });
},

但是打印出来的确实这样,求教哪里写错了:
image.png

阅读 4.3k
3 个回答

你写的太复杂了

const result = this.floors.map(item => ({ title: item.title, compAryIds: item.comps.map(_item => _item.id) }))
console.log(result)

const arr = []; 放第一个循环里面去

let newArr=arr1.map(item => {

    const result = []
    item.comps.forEach(el => {
        if (el.id) {
            result.push(el.id)
        }
    })
    return {
        title: item.title,
        compAryIds: result,

    }
})

console.log(newArr,'newArr')
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题