原始数据

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)

reduce过滤数组的更多相关文章

  1. php中利用array_filter过滤数组为空值

    [导读] 在我们开发过程中,判断数组为空时你会想到什么方法呢?首先想到的应该是empty函数,不过直接用empty函数判断为空是不对的,因为当这个值是多维数的时候,empty结果是有值的.其实我们可以 ...

  2. PHP过滤数组中的空值

    php对数组的操作已经很完善了,提供给我们很多内置函数用以操作数组,其实可以用array_filter函数对PHP数组中的控制进行过滤 array_filter() 函数用回调函数过滤数组中的值.该函 ...

  3. Falsy Bouncer 过滤数组假值

    过滤数组假值 (真假美猴王) 删除数组中的所有假值. 在JavaScript中,假值有false.null.0."".undefined 和NaN. function bounce ...

  4. pandas数组和numpy数组在使用索引数组过滤数组时的区别

    numpy array 过滤后的数组,索引值从 0 开始. pandas Series 过滤后的 Series ,保持原来的索引,原来索引是几,就是几. 什么意思呢,来看个栗子: import num ...

  5. NSPredicate过滤数组数据

    NSPredicate编写软件时,经常需要获取一个对象集合,然后删除不满足条件的对象,保留符合条件的对象,从而提供一些有意义的对象.Cocoa提供了一个名为NSPredicate的类,他用于指定过滤器 ...

  6. php过滤数组空值

    如果我们想过滤数组里面的空值,例如null,,false,' '等等,可以使用php自带的一个函数,使用起来非常方便简洁: //测试数据 $data = array( '0' => '测试内容1 ...

  7. PHP:过滤数组中为空的值,并将返回的数组使用数值键,从 0 开始并以 1 递增

    首先了解下以下两个函数: 1.array_filter() 函数用回调函数过滤数组中的值. 2.array_values() 函数返回一个包含给定数组中所有键值的数组,但不保留键名.(被返回的数组将使 ...

  8. 使用 reduce 实现数组 map 方法

    //使用 reduce 实现数组 map 方法 const selfMap2 = function (fn, context){ let arr = Array.prototype.slice.cal ...

  9. php利用array_filter()过滤数组空值

    利用array_filter过滤数组空值 <?php $array = array( 0 => '霜天部落', 1 => false, 2 => 1, 3 => null ...

随机推荐

  1. zip:命令行下zip压缩/解压缩

    在Ubuntu 18.04下验证,造冰箱的大熊猫@cnblogs 2019/6/6 序号 功能 命令行输入的命令 1 压缩单个文件 zip package.zip file 2 压缩多个文件 zip ...

  2. sass,compass学习笔记总结

    最近在进行百度前端技术学院的任务,知道自己基础薄弱,可没想到弱到这种地步,同时在安装各种软件的同时遇到了各种坑,查阅了各种资料,一个个解决的时候也发现自己凌乱了.学习总结,在脑海中形成自己的学习系统才 ...

  3. [Linux]awk RSTART,RLENGTH

    转自 http://blog.sina.com.cn/s/blog_6d76c7e20102v381.html awk 是一门非常优秀的文本处理工具,甚至可以上升作为一门程序设计语言. 它处理文本的速 ...

  4. 丰桥运单打印windows/linux环境安装(原)

    Linux ①linux下安装jdk1.8,执行命令:yum -y install java ②创建文件夹sf-service将csim_waybill_print_service_V1.0.3.ja ...

  5. response 下载文件火狐浏览器文件名乱码问题

    string path = Server.MapPath(Url.Content("~/") + "UploadFiles/Template/");       ...

  6. nodejs豆瓣爬虫

    从零开始nodejs系列文章,将介绍如何利Javascript做为服务端脚本,通过Nodejs框架web开发.Nodejs框架是基于V8的引擎,是目前速度最快的Javascript引擎.chrome浏 ...

  7. WIN7系统TortoiseSVN右键没有菜单解决办法

    TortoiseSVN右键菜单不显示解决办法,亲测有效.其他操作系统解决办法类似,如有问题,给我留言. 百度经验:jingyan.baidu.com 工具/原料   TortoiseSVN 百度经验: ...

  8. docker容器安装命令

    apt-get update apt-get install vim 转载请注明博客出处:http://www.cnblogs.com/cjh-notes/

  9. HSBToolBox

    HSBToolBox.exe Unzip all files to the folder where Hearthbuddy.exeThen just run HSBToolBox.exe [asse ...

  10. springboot多个数据源

    1.启动两个mysql,可以按照如下操作使用docker来部署mysql容器,比较简单 https://www.cnblogs.com/qq931399960/p/11527222.html 2.如果 ...