簡體   English   中英

將兩個重復項添加到 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM