使用多个ARG优化自定义功能以接受范围



Google Apps的开发人员指南建议编写您的功能以接受范围以进行优化:

function DOUBLE(input) {
  if (input.map) {            // Test whether input is an array.
    return input.map(DOUBLE); // Recurse over array if so.
  } else {
    return input * 2;
  }
}

我想知道您如何通过多个参数?例如

function DOUBLEandADD(doubleThis, addThis){
    return (doubleThis * 2) + addThis;
}

您是否一次检查两者,如何在范围内迭代?

也许是这样的东西?

function DOUBLEandADD(doubleThis, addThis) {
   if (doubleThis.map && addThis.map){
       var d = Array.from(doubleThis.values());
       var a = Array.from(addThis.values());
       for (var i = 0; i < d.length(); i++){
            return DOUBLEandADD(d[i],a[i]);
       }
   } else {
       return (doubleThis * 2) + addThis;
   }
}

您将映射函数包装在匿名函数中,然后传递其他参数。

function DOUBLEandADD(input,addend) {
  if (input.map) {           
    return input.map(function(i){return DOUBLEandADD(i,addend)}); 
  } else {
    return (input * 2) + addend;
  }
}

我在您的情况下不会使用map。怎么样:

function DOUBLEandADD(doubleThis, addThis) {
  if (Array.isArray(doubleThis) || Array.isArray(addThis)) {
    if (!Array.isArray(doubleThis) ||
        !Array.isArray(addThis) ||
        doubleThis.length != addThis.length) {
      throw new Error("doubleThis and addThis arrays must be same length.");
    }
    var results = [];
    for (var i = 0; i < doubleThis.length; i++) {
      results.push((doubleThis[i] * 2) + addThis[i]);
    }
    return results;
  } else {
    return (doubleThis * 2) + addThis;
  }
}

最新更新