簡體   English   中英

將二合一項目分組

[英]Group items of two in one array

我試圖將數組中的數字推送到另一個數組中。

如果我有一個數組[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]); 

任何人都可以看到我需要做什么來實現這一目標? 我想不明白。

您可以使用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); 

如果你真的想迭代數組,可以跳過每一個索引,所以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]);

你非常接近。 只需將長度更改為nums.length然后將循環增量i更改為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]); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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