2017-07-14 150 views
1

我试图将数组中的数字推入另一个数组中。将两个数组组合成一个数组

如果我有一个数组[1,4,3,2];它应该返回[[1,4],[3,2]];

var arrayPairSum = function(nums) { 
 

 
    var len = nums.length/2; 
 
    var arr = []; 
 

 
    for(var i = 0; i < len; i ++) { 
 
     var newArr = []; 
 
     newArr.push(nums[i]); 
 
     newArr.push(nums[i + 1]); 
 
     arr.push(newArr); 
 
    } 
 

 
    console.log(arr); //this should give me [[1,4],[3,2]]; 
 
}; 
 

 

 
arrayPairSum([1,4,3,2]);

任何人都可以看到我需要做实现这一目标?我想不明白。

回答

2

您可以使用reduce方法来实现此目的。 reduce方法接受在阵列中每个项目上提供的callback方法。

在换句话说,这种方法施加功能对蓄能器和所述阵列中的每个元件(从左至右),以减少它为单个值。

var array=[1,4,3,2,8]; 
 
var contor=array.reduce(function(contor,item,i){ 
 
    if(i%2==0) 
 
     contor.push([array[i],array[i+1]].filter(Boolean)); 
 
    return contor; 
 
},[]); 
 
console.log(contor);

0

你是八九不离十。通过2

var arrayPairSum = function(nums) { 
 

 
    var len = nums.length - 1; 
 
    var arr = []; 
 

 
    for(var i = 0; i < len; i+=2) { 
 
     var newArr = []; 
 
     newArr.push(nums[i]); 
 
     newArr.push(nums[i + 1]); 
 
     arr.push(newArr); 
 
    } 
 

 
    console.log(arr); //this should give me [[1,4],[3,2]]; 
 
}; 
 

 

 
arrayPairSum([1,4,3,2]);

1

长度只要切换到nums.length和循环增量i如果你真的想迭代这个数组,可以跳过每第二个指标,所以i+=2(如satpal已经指出):

var arrayPairSum = function(nums) { 
 

 
    var len = nums.length - 1;//if nums.length is not even, it would crash as youre doing nums[i+1], so thats why -1 
 
    var arr = []; 
 
    for (var i = 0; i < len; i += 2) { 
 
    var newArr = []; 
 
    newArr.push(nums[i]); 
 
    newArr.push(nums[i + 1]); 
 
    arr.push(newArr); 
 
    } 
 

 
    console.log(arr); //this should give me [[1,4],[3,2]]; 
 
}; 
 
arrayPairSum([1, 4, 3, 2]);

最上面的一棵在结尾处每隔一对非作物。如果你想有一个单一的[值]在最后,可能与

len=nums.length 

去以后又推

if(i+1<nums.length) newArr.push(nums[i+1]); 
+1

这将处理前检查'[1,4,3,2,5]' – Satpal

相关问题