Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在javascript中向生成的所有数字组合列表中添加两个副本_Javascript_Arrays_Multidimensional Array - Fatal编程技术网

在javascript中向生成的所有数字组合列表中添加两个副本

在javascript中向生成的所有数字组合列表中添加两个副本,javascript,arrays,multidimensional-array,Javascript,Arrays,Multidimensional Array,我资助了一个函数来创建一个列表,列出我所有可能的价值观组合。我只希望能够将第一个和第二个值复制到第三个和第四个位置 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)

我资助了一个函数来创建一个列表,列出我所有可能的价值观组合。我只希望能够将第一个和第二个值复制到第三个和第四个位置

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]);
笛卡尔函数(){
var r=[],arg=参数,max=arg.length-1;
功能助手(arr,i){

对于(var j=0,l=arg[i].length;j您所说的相当于将第一个/第二个位置向后推,复制并推到数组的开头。所以您可以只使用
slice(begin,end)
或将它们添加到数组的开头,如图所示

const data=[0.1,0.2,0.8,0.8,0.7];
常量映射=[…data.slice(0,2),…data];//或[data[0],data[1],…data];
console.log(映射);
//用法
常数c=笛卡尔([0.1,0.2],[0.1,0.2],[0.8],[0.8],[0.7])。映射((arr)=>[arr[0],arr[1],…arr]);
//还是这个

const c=cartesian([0.1,0.2],[0.1,0.2],[0.8],[0.8],[0.7]).map((arr)=>[…arr.slice(0,2),…arr]);
如何将切片添加到笛卡尔函数中?此函数必须创建数百种不同的组合,这里,我刚刚提供了一个示例列表。再次感谢。更新了答案。您可以使用
map()
如图所示。如果您知道要确定,只需克隆2个值,我将使用第一个选项。它避免了切片/解构切片数组。