1.创建一个新的包含一个有数据数组的部分数组:
let list = [];
data.map((Item,index) => {
let daliverylist = JSON.parse(Item.deliverylist)||[];
let childList = [];
//创建一个新的数组保存当前发货单号的发货列表的数据
x.sku.forEach(function(x,i) {
daliverylist.forEach(function(z) {
if(x.sku===z.sku){
childList.push({...x,num:z.num,realGet:z.num})
}
}, this);
}, this);
list[index] = ({...Item,skuList:childList});})
})
通过比较sku是否相等,创建一个新的childList数组,里面存放daliverylist的所有数据,并且加上num和realGet属性。
最后将数据和索引放在list数组里。
2.搜索相应属性有些需要去重处理
// 客户搜索去重处理
saleData.map((Item,index) =>{
cnameSearch[Item.cname]=1;
})
let newcnameSearch = [];
for(var prop in cnameSearch){
newcnameSearch.push({ cnameValue:prop })
}
例如一张发货单,一个客户可能有多张发货单,所以直接获取表中所有客户名字再组建数组会有重复,这时就会有警告,key会有重复。所以需要去重处理,将所有的客户名字组建一个数组,通过javascript的for…in语句,将所想要的字段存放在新的数组里。
JavaScript for...in 语句
for...in 语句用于对数组或者对象的属性进行循环操作。
for ... in 循环中的代码每执行一次,就会对数组的元素或者对象的属性进行一次操作。
3.