![](/img/trans.png)
[英]Recursively get all possible combinations of a set of numbers in Javascript
[英]Add two duplication to a generated list of all combinations of numbers in javascript
我資助了一個函數來創建我的價值觀的所有可能組合的列表。 我只是希望能夠將第一個和第二個值復制到第三個和第四個位置。
function cartesian() {
var r = [], arg = arguments, max = arg.length-1;
function helper(arr, i) {
for (var j=0, l=arg[i].length; j<l; j++) {
var a = arr.slice(0); // clone arr
a.push(arg[i][j]);
if (i==max)
r.push(a);
else
helper(a, i+1);
}
}
helper([], 0);
return r;
}
var c = cartesian([0.1,0.2], [0.1,0.2],[0.8],[0.8],[0.7]);
C 是 ::: [0.1,0.1,0.8,0.8,0.7], [0.1,0.2,0.8,0.8,0.7], [0.2,0.1,0.8,0.8,0.7], [0.2,0.2,0.8,0.8, 0.7]
我想將 C 轉換為 ::: [0.1,0.1,0.1,0.1,0.8,0.8,0.7], [0.1,0.2,0.1,0.2,0.8,0.8,0.7], [0.2,0.1,0.2,0.1, 0.8,0.8,0.7], [0.2,0.2,0.2,0.2,0.8,0.8,0.7]
提前致謝
您所說的相當於將第一個/第二個位置推回並復制並推到數組的開頭。 所以你可以只使用slice(begin, end)
或者你可以將它們添加到數組的開頭,如下所示。
const data = [0.1,0.2,0.8,0.8,0.7]; const mapped = [...data.slice(0,2),...data]; // OR [data[0], data[1], ...data]; console.log(mapped); // Usage const c = cartesian([0.1,0.2], [0.1,0.2],[0.8],[0.8],[0.7]).map((arr)=> [arr[0], arr[1], ...arr]); // Or this const c = cartesian([0.1,0.2], [0.1,0.2],[0.8],[0.8],[0.7]).map((arr)=> [...arr.slice(0,2), ...arr]);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.