![](/img/trans.png)
[英]Group every two items in an array while sharing the endings, like a chain
[英]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.