2017-07-14 129 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

相關問題