2017-02-28 152 views
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; 
    } 
} 

我不知道你将如何与多个参数? e.g

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

回答

0

你会将map函数包装在一个匿名函数中并传递额外的参数。

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

加法在这里是不变的,如果我理解正确,但我希望两个参数都可能是范围。 – BNY

+0

使用2个范围将对功能的特定需求非常自定义。单一工作解决方案将不会涵盖所有情况。截至目前,这个问题太宽泛无法回答。集中你的问题。 –