reduce过滤数组
原始数据
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过滤数组的更多相关文章
- php中利用array_filter过滤数组为空值
[导读] 在我们开发过程中,判断数组为空时你会想到什么方法呢?首先想到的应该是empty函数,不过直接用empty函数判断为空是不对的,因为当这个值是多维数的时候,empty结果是有值的.其实我们可以 ...
- PHP过滤数组中的空值
php对数组的操作已经很完善了,提供给我们很多内置函数用以操作数组,其实可以用array_filter函数对PHP数组中的控制进行过滤 array_filter() 函数用回调函数过滤数组中的值.该函 ...
- Falsy Bouncer 过滤数组假值
过滤数组假值 (真假美猴王) 删除数组中的所有假值. 在JavaScript中,假值有false.null.0."".undefined 和NaN. function bounce ...
- pandas数组和numpy数组在使用索引数组过滤数组时的区别
numpy array 过滤后的数组,索引值从 0 开始. pandas Series 过滤后的 Series ,保持原来的索引,原来索引是几,就是几. 什么意思呢,来看个栗子: import num ...
- NSPredicate过滤数组数据
NSPredicate编写软件时,经常需要获取一个对象集合,然后删除不满足条件的对象,保留符合条件的对象,从而提供一些有意义的对象.Cocoa提供了一个名为NSPredicate的类,他用于指定过滤器 ...
- php过滤数组空值
如果我们想过滤数组里面的空值,例如null,,false,' '等等,可以使用php自带的一个函数,使用起来非常方便简洁: //测试数据 $data = array( '0' => '测试内容1 ...
- PHP:过滤数组中为空的值,并将返回的数组使用数值键,从 0 开始并以 1 递增
首先了解下以下两个函数: 1.array_filter() 函数用回调函数过滤数组中的值. 2.array_values() 函数返回一个包含给定数组中所有键值的数组,但不保留键名.(被返回的数组将使 ...
- 使用 reduce 实现数组 map 方法
//使用 reduce 实现数组 map 方法 const selfMap2 = function (fn, context){ let arr = Array.prototype.slice.cal ...
- php利用array_filter()过滤数组空值
利用array_filter过滤数组空值 <?php $array = array( 0 => '霜天部落', 1 => false, 2 => 1, 3 => null ...
随机推荐
- windows OpenCV 2.4.9 Python 2.7配置
1 .下载 OpenCV 2.4.9 .下载OpenCV-2.4.9,使用方便 下载地址 2. OpenCV-自解压文件,直接运行.即可解压.解压到想要的opencv文件夹里E:\Programme\ ...
- 简单的理解 equals和==的区别
直接上代码: //== 比较的是地址 String test = new String("测试"); String test1 = new String("测试" ...
- 一文学会redis从零到入门
本文参照视屏学习整理:https://www.bilibili.com/video/av16841549/?p=9 相关软件.资料: 基本条件:有虚拟机或相关linux系统,熟悉基本linux操作 本 ...
- python中重要的概念:类(class)
1.名词解释 类:类代表了具有相同特征的一类事物(人) 对象.实例:具体的某一个事物或者是人 实例化:将类变成对象的这么一个过程,即新建一个对象的过程,就是对类的一个实例化过程. 2.格式 函数定义: ...
- 1-1RGB色彩模式
http://www.missyuan.com/thread-350716-1-1.html RGB色彩模式 CTRL+O 打开文件 双击{O->Open} F8/菜单-窗口-信息 调出 ...
- 2016 NEERC, Northern Subregional Contest G.Gangsters in Central City(LCA)
G.Gangsters in Central City 题意:一棵树,节点1为根,是水源.水顺着边流至叶子.该树的每个叶子上有房子.有q个询问,一种为房子u被强盗入侵,另一种为强盗撤离房子u.对于每个 ...
- linux下编译利用CMakeLists.txt 编译C++写的opencv程序
https://hihozhou.com/blog/2017/05/11/linux-compile-opencv-c++-file.html cmake . make -j8
- golang精选100题带答案
能力模型 级别 模型 初级 primary 熟悉基本语法,能够看懂代码的意图: 在他人指导下能够完成用户故事的开发,编写的代码符合CleanCode规范: 中级 intermediate 能够独立完成 ...
- Python实现Dijkstra算法
# Dijkstra.狄杰斯特拉 import heapq import math def init_distance(graph, s): distance = {s: 0} for vertex ...
- react-native(ios)简单配置环境(mac)
1.首先全局安装react-native-cli npm install -g react-native-cli 2.安装xcode(appStore) 3.打开xcode,检查一下是否装有某个版本的 ...