我在做项目时遇到一个数组请求回来时,我只要取其中的几个属性就可以了,并且把这几个属性追加到新的数组里面,接着把这个新的数组把它追加到每个数组下面成为新属性,具体实现步骤如下:
1.var arry = request.data.data //加入这是我请求回来的数组:
2.接着想在这六条数据对应的对象属性把其中的几项属性追加到数组里面,我们可以通过for循环,然后取得数据后,再添加属性:
for (let i = 0; i < arry.length; i++) {
var goods_Arr = {} //先定义一个对象,然后再把下面请求回来的属性放进来
goods_Arr.goods_Id = arry[i].id
goods_Arr.goods_name = arry[i].name
goods_Arr.goods_num = arry[i].storage
goods_Arr.goods_Img = arry[i].thumbImage
arry[i].set_list = [goods_Arr] //最后把这个对象放到数组里面
}
console.log('arri', arry)
效果图:
这里我如果想在属性set_list数组后面再追加52条数据的话可以这样做
1.先把52条数据数组循环遍历出来,然后也是把它其中需要的几个属性拿出来,然后再追加到一个数组里面,接着用数组的api属性concat() 把两个数组连接起来,具体代码如下:
var arrSelect = [] //先定义一个空数组
var goods_List = res.data.data //这是请求回来的52条数据
console.log('gg', goods_List)
for (let i = 0; i < goods_List.length; i++) { //接着循环遍历它
var add_list = {} //定义一个空对象
add_list.goods_Id = goods_List[i].id //把需要用到的属性取出来
add_list.goods_name = goods_List[i].name
add_list.goods_num = 1
add_list.goods_Img = this.data.Imag + goods_List[i].thumbImage
arrSelect.push(add_list) //接着把所有的数据丢到一个数组里面去
}
// console.log('arrSelect', arrSelect)
for (let i = 0; i < arry.length; i++) {
arry[i].set_list = arry[i].set_list.concat(arrSelect)
//这里再把52条数据追加到刚刚上面请求的新属set_list性数组后面去
}
console.log('arry', arry) //最终结果
效果图如下:
下面补充一下小知识this.setData({ arry: arry}), 这个可以全局调用,并且可以每个方法都可以有相同的this.setData({arry:arry}),以前我以为这个set一遍就不可以在别的方法用set了,其实不是,当你执行哪个方法它就会在哪个方法执行