嗨,今天周二了哎! 期待周五
啊哈哈哈啊,心情好的不像话,正文开始前,先夸夸自己,我真的太棒啦!!
因为今天搞定了两个问题 ,拿到问题的第一反应就是 觉得好麻烦呀,但是觉得可以挑战一下,在过程中遇到不少问题,尽管不是很难,日常开发中也总会遇到,那就记录一下叭 ,
嘿嘿,今天也太棒了叭,超级超级
啊啊啊啊啊啊啊,ctrl 不住自己的喜悦了
提示:以下是本篇文章正文内容,下面案例可供参考
let data = [{ id: 1, name: '哈哈' }, { id: 2, name: '嘻嘻' }]
let newData = []
data.map(item => {
newData.push(Object.assign({}, { name: item.name, }))
})
console.log(newData, 'pyq')
map 和 foreach 相似,但是map 有返回值
let data = [
{
cost_name: "分检费",
number: "12",
unit: "吨",
total_price: "60"
},
{
cost_name: "冷冻费",
number: "5",
unit: "吨",
total_price: "10"
},
{
cost_name: "分检费",
number: "6",
unit: "吨",
total_price: "30"
},
{
cost_name: "冷冻费",
number: "30",
unit: "吨",
total_price: "600"
},
{
cost_name: "包装费",
number: "12",
unit: "吨",
total_price: "100"
}
];
let newData = [
{
cost_name: "分检费",
number: "18",
unit: "吨",
total_price: "90"
},
{
cost_name: "冷冻费",
number: "35",
unit: "吨",
total_price: "610"
},
{
cost_name: "包装费",
number: "12",
unit: "吨",
total_price: "100"
}
];
我们的需求是将 data 的数据合并称 newData 的数据,先将数据按公共合并
先将数据扁平化
let arr = [];
let obj = {};
let objChild = {};
data.forEach(item => {
obj = {
cost_name: item.cost_name,
unit: item.unit,
spend: []
};
objChild = {
number: item.number,
total_price: item.total_price
};
obj.spend.push(objChild);
arr.push(obj);
});
结果
let data = [
{
cost_name: "分检费",
unit: "吨",
spend:[
{ number: "12",total_price: "60" }
]
},
{
cost_name: "冷冻费",
unit: "吨",
spend:[
{ number: "5",total_price: "10"}
]
},
{
cost_name: "分检费",
unit: "吨"
spend:[
{ number: "6",,total_price: "30"}
]
},
{
cost_name: "冷冻费",
unit: "吨",
spend:[
{ number: "30",total_price: "600"}
]
},
{
cost_name: "包装费",
unit: "吨",
spend:[
{ number: "12",total_price: "600"}
]
}
];
我们的需求是将
数据 再次处理
成为我们想要的结果
let newData = [];
let newObj = {};
arr.forEach((el, i) => {
if (!newObj[el.cost_name]) {
// 循环遍历 arr 每一项,如果费用不存在,就将这个条数据添加至新数组里
// 并且给 newObj 对象费用类别做个标记,下次再走这个费用类别时,说明存在就走另一个判断
// {分检费:true,包装费:true,....}
newData.push(el);
newObj[el.cost_name] = true;
} else {
// 在收集的新数据里,我们要用之前的数据和当前项判断
// 找到相同项,添加至新的新数据项里
newData.forEach(el2 => {
if (el2.cost_name === arr[i].cost_name) {
el2.spend = [...el2.spend, ...arr[i].spend]; // es6语法
}
});
}
});