基于数组值的链函数

时间:2016-11-04 13:02:59

标签: javascript arrays recursion mapreduce

我有一个任意长度的数组,其中包含:

const arr = [{key: 345}, {key: 786}, {key: 980}];

我想返回一个使用数组返回promise链的函数。

function getCallback(arr) {
  return function(builder) {
    return builder
     .where(arr[0].key)
     .where(arr[1].key)
     .where(arr[2].key)
  }
}

不确定如何使用任意长度的数组实现此目的。我查看了recursive solution,但无法在此用例中使用它。

1 个答案:

答案 0 :(得分:3)

您现在不必像在示例代码中那样对函数调用进行链接。而是在循环中单独调用它们:

const arr = [{key: 345}, {key: 786}, {key: 980}];

function getCallback(arr) {
  return function(builder) {
    arr.forEach(function(item) {
      builder = builder.where(item.key);
    });
    return builder;
  }
}
                
var MockBuilder = function() {}
MockBuilder.prototype.where = function(key) {
  console.log(key);
  return this;
};
    
var callback = getCallback(arr);
callback(new MockBuilder());