是否有一个 JavaScript 或 Lodash 函数可以轻松迭代成对或三元组

are there a javascript or lodash function that makes it easy to iterate through pairs or triples

本文关键字:迭代 三元组 JavaScript 有一个 Lodash 函数 是否      更新时间:2023-09-26

所以我想在这里填写every(#):

var arr = [1,2,3,4,5,6,7,8]
arr.every(2)(function(a,b) {
  return a + b;
})
// [3, 5, 7, 9, 11, 13, 15]
arr.every(3)(function(a,b,c) {
  return a + b + c;
})
// [6, 9, 12, 15, 18, 21]

使用 reduce 函数:

arr.reduce(function(p,v,i,a) { if( i + 1 < a.length ) p.push( a[i] + a[i + 1] ); return p; },[]);
arr.reduce(function(p,v,i,a) { if( i + 2 < a.length ) p.push( a[i] + a[i + 1] + a[i + 2]); return p; },[]);

我不会轻易覆盖阵列原型。 如果你想要一个执行以下每一项任务的函数:

every = function(a,n,c) { return a.reduce(function(p,v,i,a) { if( i + n - 1 < a.length ) p.push( c.apply( this, a.slice( i, i + n ) ) ); return p; }, [] ); };
every(arr,2,function(a,b){return a+b;});
every(arr,3,function(a,b,c){return a+b+c;});

好吧,从技术上讲,您可以在所需的间隔内分配跳转变量:for (var i = 0; i < arr.length; i += 2) .你可以把这个2碰到任何你想要的东西。

java脚本中没有这样的方法。 您必须逐个实现 yourself.by 扩展数组的原型。

JavaScript中已经有一个名为"every"的方法,它将用于查找所有元素是否都满足某些条件。

因此,请使用不同的名称或大写字母或下划线以避免覆盖。

根据您的要求进行编辑

Array.prototype._every = function (n, callback) {
             if ( n > this.length ) 
                 return new Error("Invalid pair size"); 
             var everyEl = new Array(this.length - (n - 1)),result = []; 
             var original = this, temp = new Array(n);
             original.forEach(function (val, ind) {
                   if ( (ind + 1) >= n ) {
                      result[ ind-n ] = callback.apply(this, original.slice(n - ind - 1, ind, n));    
                   } 
             });
            return result;
   }
you should call this method like this
var arr = [10,20,30,40];
arr._every(2, function(a, b){
     return a+b;
});