如何取出所有的 projectList,放到一个新的数组中

boots9yPYb
  • 5
新手上路,请多包涵

image

如何取出所有的 projectList,放到一个新的数组中,
自己写了循环,然后遍历 list, 只拿到最后的两条数据,请问这里应该怎么写

for(var j = 0;j < data.length;j++){

  this.list = data[j].projectList

}

回复
阅读 917
6 个回答
✓ 已被采纳
this.list = data.map(item => item.projectList).flat()

image.png

this.list = data.flatMap(v=>v.projectList)

image.png


上面是一些 ES6 的写法。下面开始说你这个怎么整

看你的代码,你重新给list赋值了,数组赋值应该用什么?push

image.png

let temp=[];
for(var j = 0;j < data.length;j++){
 temp.push(...data[j].projectList)
}
this.list=temp;

因为projectList本身就是一个数组,不知道你是想把整个projectList当做list中的一个元素,还是取出每个projectList中的每个元素,当做list的元素。如果是第一种,可以使用map(reduce等也可以,没map简单明了),第二种可以使用reduce

//把整个projectList数组当做一个子元素
this.list = data.map(item => item.projectList)


//或者
this.list = data.reduce((arr, item) => {
    //展平projectList中的每个元素
    arr = arr.concat(item.projectList)
    //把整个projectList数组当做一个子元素
    arr.push(item.projectList)
    return arr
}, [])
let newList = this.tableData1.map(item => item.projectList)
console.log(newList, 'newList')     //这是把所有的projectList拿出来放到newList数组
var sumData = []
newList.forEach(element => {
  sumData = sumData.concat(element)
})
console.log(sumData, 'sumData')     //这是把所有数组合并成一个

data() {

return {
  tableData1: [
    {
      id: 1,
      date: '2016-05-02',
      projectList: [{ projectNo: '16633211' }, { projectNo: '2253214' }]
    },
    {
      id: 2,
      date: '2016-05-04',
      projectList: [{ projectNo: '331121' }, { projectNo: '4412312' }]
    },
    {
      id: 3,
      date: '2016-05-01',

      hasChildren: true,
      projectList: [{ projectNo: '552514' }, { projectNo: '6685547' }]
    },
    {
      id: 4,

      address: '上海市普陀区金沙江路 1516 弄',
      projectList: [{ projectNo: '772395412' }, { projectNo: '88562148544' }]
    }
  ]
}

},

你的题意应该是去除列表中每项的projectList中的元素放到一个数组中,也就是展平projectList吧。
你的只有最后两项是因为你this.list = 每次循环都覆盖了list,按照你的写法改最简单的就是

this.list = []
for(var j = 0;j < data.length;j++){
    this.list.push(data[j].projectList)
}
boots9yPYb
  • 5
新手上路,请多包涵

解决的方法还是有很多的,用两层 forEach() 也可以

data.forEach((item) => {

item.projectList.forEach((its) => {
    this.list.push(its);
})

})

在这里感谢大家的热心解答,自己平时还是要多练啊

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

宣传栏