我有几种形式的功能:
this.something = function (which) {
// One or many.
if (!Array.isArray(which)) {
// Normal - just one.
doSomething(which);
} else {
// To all!
which.forEach(function (thing) {
// Note the recursion
something(thing);
});
}
};
有更简洁的方法吗?
答案 0 :(得分:3)
this.something = function(which) {
(Array.isArray(which) ? which : [which]).forEach(function(thing) {
doSomething(thing);
});
};
答案 1 :(得分:0)
不是真正的粉丝,但你经常会看到这个:
// A function that handles values as a single parameter, or inside an array
var doSomething(x) {
if (Array.isArray(x)) {
x.forEach(doSomething);
} else {
console.log(x);
}
}
您可以从doSomething
中提取并应用如下的实用程序方法:
var ifArrayForEach = f => x => Array.isArray(x) ? x.forEach(f) : f(x);
var doSomething = x => console.log(x);
var doSomethingArrayOrNot = ifArrayForEach(doSomething);
doSomethingArrayOrNot("Hello world");
doSomethingArrayOrNot(["Hello", "world"]);
再次......我不是一个大粉丝,但有时候它会很有用。我个人只是在打电话前检查一下。在某些时候,你必须知道你正在处理什么数据......
答案 2 :(得分:0)
不确定这是否符合" Tidier"请求您寻找,但您可以随时在try / catch中处理它。
try {
which.forEach(function (thing) {
something(thing);
});
} catch (e) {
if (e instanceof TypeError) {
doSomething(which);
}
}