2017-02-28 22 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個範圍將對功能的特定需求非常自定義。單一工作解決方案將不會涵蓋所有情況。截至目前,這個問題太寬泛無法回答。集中你的問題。 –