0

谷歌应用程序的开发人员指南建议编写您的函数以接受优化范围,如下所示:

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;
   }
}
4

2 回答 2

1

我不会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;
  }
}
于 2019-12-27T12:18:09.520 回答
1

您可以将 map 函数包装在匿名函数中并传递附加参数。

function DOUBLEandADD(input,addend) {
  if (input.map) {           
    return input.map(function(i){return DOUBLEandADD(i,addend)}); 
  } else {
    return (input * 2) + addend;
  }
}
于 2017-02-28T21:35:46.800 回答