谷歌应用程序的开发人员指南建议编写您的函数以接受优化范围,如下所示:
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;
}
}
答案 0 :(得分:0)
您可以将map函数包装在匿名函数中并传递其他参数。
function DOUBLEandADD(input,addend) {
if (input.map) {
return input.map(function(i){return DOUBLEandADD(i,addend)});
} else {
return (input * 2) + addend;
}
}
答案 1 :(得分:0)
在您的情况下,我不会使用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;
}
}