sku二维数组里的数组从头到尾叠加组合
今天工作之余与同事聊天,要是实现一个sku描述里的字段组合的问题。并且实现了请吃饭。哈哈。一顿饭,我和另一位同事积极杠杆的。后来实现了出来。
let skuList = [
['黑色', '白色','黄色'],
['64G', '128G', '512G'],
]
例如上面的组合成这样。
[
["黑色", "64G"]
["黑色", "128G"]
["黑色", "512G"]
["白色", "64G"]
["白色", "128G"]
["白色", "512G"]
["黄色", "64G"]
["黄色", "128G"]
["黄色", "512G"]
]
代码实现如下
function eachArr(arr1,arr2){
return arr1.map(function(item1){
return arr2.map(function(item2){
return item1 instanceof Array ? item1.concat(item2):[item1,item2];
})
}).reduce( function(accumulator, currentValue){
return accumulator.concat(currentValue) })
}
[['黑色', '白色','黄色'], ['64G', '128G', '512G'],].reduce(function(accumulator, currentValue){
return eachArr(accumulator,currentValue)
})
返回
[
["黑色", "64G"]
["黑色", "128G"]
["黑色", "512G"]
["白色", "64G"]
["白色", "128G"]
["白色", "512G"]
["黄色", "64G"]
["黄色", "128G"]
["黄色", "512G"]
]
支持多二维数组哦。
例如:
[ ['黑色', '白色','黄色'], ['64G', '128G', '512G'],['大', '中', '小'],.......].reduce(function(accumulator, currentValue){
return eachArr(accumulator,currentValue)
})
返回值是
["黑色", "64G", "大"]
["黑色", "64G", "中"]
["黑色", "64G", "小"]
["黑色", "128G", "大"]
["黑色", "128G", "中"]
["黑色", "128G", "小"]
["黑色", "512G", "大"]
["黑色", "512G", "中"]
["黑色", "512G", "小"]
["白色", "64G", "大"]
["白色", "64G", "中"]
["白色", "64G", "小"]
["白色", "128G", "大"]
["白色", "128G", "中"]
["白色", "128G", "小"]
["白色", "512G", "大"]
["白色", "512G", "中"]
["白色", "512G", "小"]
["黄色", "64G", "大"]
["黄色", "64G", "中"]
["黄色", "64G", "小"]
["黄色", "128G", "大"]
["黄色", "128G", "中"]
["黄色", "128G", "小"]
["黄色", "512G", "大"]
["黄色", "512G", "中"]
["黄色", "512G", "小"]
总体实现思路就是二维数组里的第一个数组与后一个数组组合。然后组合后的数组,再与后一个数组组合。依次累计组合就可以了。美滋滋。吃了一顿蜜汁鸡。
这是这是简单的实现一种方式,如果要加上其他业务或是功能可以再eachArr里面区改动。
如要帮忙改动的,可以留言哦。
sku二维数组里的数组从头到尾叠加组合的更多相关文章
- 洛谷 P1972 [SDOI2009]HH的项链-二维偏序+树状数组+读入挂(离线处理,思维,直接1~n一边插入一边查询),hahahahahahaha~
P1972 [SDOI2009]HH的项链 题目背景 无 题目描述 HH 有一串由各种漂亮的贝壳组成的项链.HH 相信不同的贝壳会带来好运,所以每次散步完后,他都会随意取出一段贝壳,思考它们所表达的含 ...
- 二维偏序+树状数组【P3431】[POI2005]AUT-The Bus
Description Byte City 的街道形成了一个标准的棋盘网络 – 他们要么是北南走向要么就是西东走向. 北南走向的路口从 1 到 n编号, 西东走向的路从1 到 m编号. 每个路口用两个 ...
- $[SHOI2007]$ 园丁的烦恼 二维数点/树状数组
\(Sol\) 设一个矩阵的左上角为\((x_1,y_1)\),右下角为\((x_2,y_2)\),\(s_{x,y}\)是到\((1,1)\)二维前缀和,那么这个矩阵的答案显然是\(s_{x_2,y ...
- poj3067 二维偏序树状数组
题解是直接对一维升序排列,然后计算有树状数组中比二维小的点即可 但是对二维降序排列为什么不信呢?? /* */ #include<iostream> #include<cstring ...
- hdu1081 DP类最大子段和(二维压缩+前缀和数组/树状数组计数)
题意:给出一个 n * n 的数字矩阵,问最大子矩阵和是多少. 由于和最长子段和问题类似,一开始想到的就是 DP ,一开始我准备用两个循环进行 DP ,对于每一个 (i,j) ,考察(i - 1,j) ...
- 【BZOJ】1047: [HAOI2007]理想的正方形(单调队列/~二维rmq+树状数组套树状数组)
http://www.lydsy.com/JudgeOnline/problem.php?id=1047 树状数组套树状数组真心没用QAQ....首先它不能修改..而不修改的可以用单调队列做掉,而且更 ...
- C. Arcade dp二维费用背包 + 滚动数组 玄学
http://codeforces.com/gym/101257/problem/C 询问从左上角走到右下角,每次只能向右或者向左,捡起三种物品算作一个logo,求最多能得到多少个logo. 设dp[ ...
- c++ 依据输入动态声明数组(一维,二维)
较早的编译器是不同意这样做的,所以一些书籍比方以Tc解说的书本都说数组的下标不能是变量.在vc6.0下亦是如此. 只是在一些较新的编译器如dev c++已经支持了,例如以下代码不会报错 #includ ...
- C++二维数组动态内存分配
对于二维数组和二维指针的内存的分配 这里首选说一下一维指针和一维数组的内存分配情况. 一维: 数组:形如int a[5];这里定义了一个一维数组a,并且数组的元素个数是5,这里的a是这五个元素的整体 ...
随机推荐
- epoll(2) 源码分析
epoll(2) 源码分析 文本内核代码取自 5.0.18 版本,和上一篇文章中的版本不同是因为另一个电脑出了问题,但是总体差异不大. 引子留下的问题 关键数据结构 提供的系统调用 就绪事件相关逻辑 ...
- InitializingBean,spring 初始化bean
springframework的提供接口,InitializingBean接口为bean提供了初始化方法的方式,它只包括afterPropertiesSet方法,凡是继承该接口的类,在初始化bean的 ...
- markdown语法(转)
markdown语法 1.标题代码 # 一级标题 ## 二级标题 ### 三级标题 #### 四级标题 ##### 五级标题 ###### 六级标题 2.引用代码 >你好 >> 您好 ...
- OptimalSolution(2)--二叉树问题(1)遍历与查找问题
一.二叉树的按层打印与ZigZag打印 1.按层打印: 1 Level 1 : 1 / \ 2 3 Level 2 : 2 3 / / \ 4 5 6 Level 3 : 4 5 6 / \ 7 8 ...
- Java多线程编程(一)Java多线程技能
一.进程和多线程的概念以及线程的优点 打开Windo任务管理器可以看到很多正在运行着的exe程序,完全可以将运行在内存中的exe文件理解成进程,进程是受操作系统管理的基本运行单元. 线程可以理解成在进 ...
- vue表单属性
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- snaic和tornado的简单性能测试
操作系统 : CentOS7.3.1611_x64 Python 版本 : 3.6.8 tornado版本:6.0.2 snaic版本:19.9.0 CPU : Intel(R) Core(TM) i ...
- Web for pentester_writeup之XML attacks篇
Web for pentester_writeup之XML attacks篇 XML attacks(XML攻击) Example 1 - XML外部实体注入(XXE) Payload http:// ...
- CSPS模拟 77
%%两位AK爷zkt和skyh T1 位间独立,分别讨论 T2 维护标记,代替移位 T3 同一点对,多种联通,没法搞. 发现最多四路连通,考虑容斥. 显然的奇加偶减. 发现统计某种颜色的点之间的联通数 ...
- [ASP.NET Core 3框架揭秘] 依赖注入[5]: 利用容器提供服务
毫不夸张地说,整个ASP.NET Core框架是建立在依赖注入框架之上的.ASP.NET Core应用在启动时构建管道以及利用该管道处理每个请求过程中使用到的服务对象均来源于依赖注入容器.该依赖注入容 ...