reduce过滤数组
2024-09-04 08:17:15
原始数据
const data = [{
id: ,
spec: '规格1',
rules: [{
rank: ,
breaks:
},
{
rank: ,
breaks:
},
{
rank: ,
breaks:
}
]
},
{
id: ,
spec: '规格2',
rules: [{
rank: ,
breaks:
},
{
rank: ,
breaks:
},
{
rank: ,
breaks:
}
]
}
];
使用 forEach 遍历
function skuFormat(data) {
let RankList = [];
data.forEach(item => {
item.rules.forEach(ite => {
if (RankList.indexOf(ite.rank) === -) RankList.push(ite.rank);
})
})
let newData = [];
RankList.forEach(item => {
newData.push({
rank: item,
skus:[]
})
})
newData.forEach(item=>{
data.forEach(ite=>{
let Remark={
id:ite.id,
spec:ite.spec,
breaks:
}
try {
ite.rules.forEach(it=>{
if(item.rank===it.rank){
Remark.breaks=it.breaks;
item.skus.push(Remark);
throw(new Error('find item'));
}
})
} catch (error) {
}
})
})
return newData;
}
let newData= skuFormat(data);
console.log(newData)
使用 reduce 处理
let newData=data.reduce((pre, cur) => {
console.log(cur,pre)
const list = cur.rules.map(item => ({
rank: item.rank,
skus: [{
id: cur.id,
spec: cur.spec,
breaks: item.breaks
}]
}))
if (!pre.length) {
return list;
}
return pre.map((item, key) => {
return {
...item,
skus: [...item.skus, ...list[key].skus]
}
})
}, []);
console.log(newData)
最新文章
- Web测试介绍2一 安全测试
- django-- Models
- BT客户端实现 Peer协议设计
- IOS开发之开发者账号遇到的bug
- Activity中UI框架基本概念
- 错误C2665: “AfxMessageBox”: 2 个重载中没有一个可以转换所有参数类型
- dedecms调用子栏目内容,缩略图,以及栏目名字
- 读取Config文件工具类 PropertiesConfig.java
- 关于判断变量是否为null的顺序问题。
- 【JSP 标签】格式化日期
- api接口写好了?想过(Accept,Content-Type)?返回类型json|xml?
- [LeetCode] Next Closest Time 下一个最近时间点
- Spark技术内幕:一个图搞定Spark到底有多少行代码
- 关于 IOS 时间的一下用法
- KVM 部署 日常操作
- Windows 下单机最大TCP连接数
- 聊聊 CAS
- MVC bundle的使用总结
- 【转载】关于Java String, StringBuilder, StringBuffer, Hashtable, HashMap的面试题
- 使用华邦的SPI FLASH作为EPCS时固化NIOS II软件报错及解决方案