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是这五个元素的整体 ...
随机推荐
- Beetlex服务框架之Webapi版本访问控制
在应用服务中API更新是很普遍的事情,为了服务良好地运作很多时候需要新旧版本同时兼容:为了应对这一系列的需求FastHttpApi在新版中强化了Url重写机制来支持API访问版本控制,由原来固定的重写 ...
- (day29) 进程互斥锁 + 线程
目录 进程互斥锁 队列和堆栈 进程间通信(IPC) 生产者和消费者模型 线程 什么是线程 为什么使用线程 怎么开启线程 线程对象的属性 线程互斥锁 进程互斥锁 进程间数据不共享,但是共享同一套文件系统 ...
- Java基础(二十)集合(2)Collection接口
1.Collection接口通常不被直接使用.但是Collection接口定义了一些通用的方法,通过这些方法可以实现对集合的基本操作,因为List接口和Set接口都实现了Collection接口,所以 ...
- C#控件的简单应用
listview 创建columns: ImageList imgList = new ImageList(); imgList.ImageSize = , ); FaceListview.Small ...
- SVM详细笔记及总结
本文精品,如有疑问欢迎留言or微信咨询:523331232
- 27 个问题突破所有重难点,BroadcastReceiver 、ContentProvider 知多少?「建议收藏」
前言 距离上次更新过去一周多了,打破了之前两到三天一更的惯例,主要还是这部分内容太多了. 原先想把 BroadcastReceiver .ContentProvider 分两篇来总结,但的确,这两大组 ...
- 《Effective Java》 读书笔记(一) 使用静态构造方法代替传统构造函数
对象的创建与销毁 ITEM1 使用静态工厂方法代替构造函数 传统的新建一个对象的方法是通过构造函数: Foo foo =new Foo(); 一个类也可以提供一个静态方法产生一个对象: Boolean ...
- 【XSY2131】【BZOJ1857】【SCOI2010】传送带
Description 题目描述: 在一个二维平面上有两条传送带,每一条传送带可以看成是一条线段.两条传送带分别为线段AB和线段CD.小y在AB上的移动速度为P,在CD上的移动速度为Q,在平面上的移动 ...
- continue和break在while中用法
continue用法:结束本次循环,不执行continue下面的语句,返回执行下一次循环.注意:当执行完while的循环后,执行else 后的语句 break:结束循环,else下面语句也不执行
- NOIP模拟 13
我终于又厚颜无耻地赖着没走 ...... T1 矩阵游戏 用了30hmin找规律,然后发现貌似具有交换律,然后发现貌似有通项公式,然后发现貌似每次操作对通项的影响是相同的,然后发现貌似跟N没啥关系.. ...