sku排列算法,庫存類展示(規格,型號,顏色等)


常用於電商類項目(超淺顯層面)

例如一種商品有三種規格:顏色,尺寸,種類

顏色又分為:[紅,黃,藍]

尺寸:[A,B]

種類:[1,2,3]

可以結合為多種排列

如:[‘紅’,A,1],[‘黃’,A,1],....等,可以用到sku排列算法:

  摘抄的代碼,原地址給忘了,

  

let arr = [
		    [1, 2, 3],
		    ['紅', '黃', '藍'],
		    ['A', 'B']
		];
		 
		function cartesianProductOf() {
		    return Array.prototype.reduce.call(arguments, (fristItem, secondItem) => {
		        var ret = [];
		        fristItem.forEach(function(fristItem) {
		            secondItem.forEach(function(secondItem) {
		                ret.push(fristItem.concat([secondItem]));
		            });
		        });
		        return ret;
		    }, [[]]);
		}
		 
		let allArr =cartesianProductOf(...arr )
		console.log(allArr)

  返回結果:

 1 (18) [Array(3), Array(3), Array(3), Array(3), Array(3), Array(3), Array(3), Array(3), Array(3), Array(3), Array(3), Array(3), Array(3), Array(3), Array(3), Array(3), Array(3), Array(3)]
 2 0: (3) [1, "紅", "A"]
 3 1: (3) [1, "紅", "B"]
 4 2: (3) [1, "黃", "A"]
 5 3: (3) [1, "黃", "B"]
 6 4: (3) [1, "藍", "A"]
 7 5: (3) [1, "藍", "B"]
 8 6: (3) [2, "紅", "A"]
 9 7: (3) [2, "紅", "B"]
10 8: (3) [2, "黃", "A"]
11 9: (3) [2, "黃", "B"]
12 10: (3) [2, "藍", "A"]
13 11: (3) [2, "藍", "B"]
14 12: (3) [3, "紅", "A"]
15 13: (3) [3, "紅", "B"]
16 14: (3) [3, "黃", "A"]
17 15: (3) [3, "黃", "B"]
18 16: (3) [3, "藍", "A"]
19 17: (3) [3, "藍", "B"]
20 length: 18
21 __proto__: Array(0)

也可以簡化一下:

 1 <script type="text/javascript">
 2         let arr = [
 3             [1, 2, 3],
 4             ['紅', '黃', '藍'],
 5             ['A', 'B']
 6         ];
 7         fn = (a, b) => [].concat(...a.map(d => b.map(e => [].concat(d, e))));
 8         specification = (a, b, ...c) => (b ? specification(fn(a, b), ...c) : a)
 9         let output = specification(...arr)
10         console.log(output)
11     </script>

結果和上面相同,記下來 慢慢學習規整

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM