请教两个数组关联的问题?

题目描述

getA接口得到数据a
a = [{"id":"1", "name": 'aa'},{"id":"2", "name": "bb"}]
然后通过a的不同id,getB接口得到不同的数据b:
list = [{},{},{}]
最后怎么能得到c
c = [{"id":"1", "name": 'aa' ,list:[id为1的数组list]},{"id":"2", "name": "bb",list:[id为2的数组list]}]

题目来源及自己的思路

相关代码

// 请把代码文本粘贴到下方(请勿用图片代替代码)
function getColumn() {
得到数据a:[{"id":"1","name":"aa"},{"id":"2","name":"bb"},{"id":"3","name":"cc"}]
var newList = [];
for (var i = 0; i < res.data.length; i++) {

  id = res.data[i].id
  newlist.push(getlist(id));

}

怎么把不同的list存在一起,类似[{list1},{list2},{list3}]
}
function getList(id) {
var list = res.data.data;
return list;
}

你期待的结果是什么?实际看到的错误信息又是什么?

阅读 1.6k
2 个回答
你的问题核心是数据遍历整理,处理如下,简单写了下
let a = [
  { id: 1, name: '星期', someValue: '周二' },
  { id: 2, name: '日期', someValue: '24号' },
  { id: 2, name: '日期', someValue: '1号' },
  { id: 1, name: '星期', someValue: '周日' },
  { id: 3, name: '年', someValue: '2019' }
]

let arr = [];
let obj = {}
a.forEach(element => {
  if(!obj[element.id]){
    obj[element.id] = []
    arr.push(element)
  }
  obj[element.id].push(element)
});

let data = arr.map((item,index)=>{
  console.log(item, index, obj[item.id])
  return {
    ...item,
    value: obj[item.id]
  }
})
console.log(data)

如果我理解的没错的话:

    
    let a = [{id:1,name:'a'},{id:2,name:'b'},{id:3,name:'c'}]
    let b = [{id:1,age:18},{id:1,age:20},{id:3,age:30}]

    let c = a.reduce((x,y)=>{
        y['array'] = b.filter(item=> y.id == item.id)
        x.push(y)
        return x
    },[])
    console.log(JSON.stringify(c));
    //[{"id":1,"name":"a","array":[{"id":1,"age":18},{"id":1,"age":20}]},{"id":2,"name":"b","array":[]},{"id":3,"name":"c","array":[{"id":3,"age":30}]}]
   

顺便吐槽一下,你这神马破描述,这是考阅读理解呢

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