const Finallist = [ [“黑色”、“大”、“a”]、 [“黑色”、“大”、“b”]、 [“黑色”、“大”、“c”]、 [“黑色”、“中”、“a”]、 [“黑色”、“中”、“b”]、 [“黑色”、“中”、“c”]、 [“蓝色”、“大”、“a”]、 [“蓝色”、“大”、“b”]、 [“蓝色”、“大”、“c”]、 [“蓝色”、“中”、“a”]、 [“蓝色”、“中”、“b”]、 [“蓝色”、“中”、“c”]、 ]</pre> <p><strong>请记住input_array是动态的</strong></p> <p><strong>请告诉我如何做到这一点</strong></p>
P粉7295188062023-09-07 09:34:40
你可以像这样做:
const input_array = [ ["black", "blue"], ["large", "medium"], ["a", "b", "c"] ] const getCompinations = array => array.reduce((v, b) => v.reduce((r, g) => [...r, ...b.map(w => [].concat(g, w))], []) ) console.log(getCompinations(input_array))
P粉4492810682023-09-07 00:39:31
看一下这个,可能会有帮助:
const input_array = [ ["black", "blue"], ["large", "medium"], ["a", "b", "c"] //... 是否可以动态添加多行 ]; const mmc = input_array.reduce((e, r) => e * r.length, 1); const finallist = input_array.map((x,i)=>({index:i,arr:x})).reduce((e, r) => { for (var u = 0; u < mmc; u++) e[u] && (!r.arr.some(r => e[u].includes(r)) || e[u].length <= r.index) ? e[u].push(r.arr[u % r.arr.length]) : e.push([r.arr[u % r.arr.length]]); return e.sort(), e }, []);
小心! 在大规模矩阵中可能会导致浏览器崩溃。