Javascript 如何将函数应用于对象或类似对象的数组
下面的输入可以是单个对象,也可以是相同类型对象的数组。我想在任何情况下将Javascript 如何将函数应用于对象或类似对象的数组,javascript,Javascript,下面的输入可以是单个对象,也可以是相同类型对象的数组。我想在任何情况下将myFunction应用于所有这些对象 我用Lodash这样做: if (input.length !== undefined) { // Array return _.map(input, myFunction.bind(this, options)); } else { // One object return myFunction(options, input); } 有更好的方法吗?
myFunction
应用于所有这些对象
我用Lodash这样做:
if (input.length !== undefined) {
// Array
return _.map(input, myFunction.bind(this, options));
}
else {
// One object
return myFunction(options, input);
}
有更好的方法吗?有一种有趣的方法供您使用,因此您可以在函数中始终接收数组,从而简化它:
function f1(...input) {
return _.map(input, myFunction.bind(this, options));
}
...
f1(o1); // call passing a single object
f1(o1, o2); // call passing two objects
f1(...[o1, o2]); // call passing an array with two objects
使用
Array.isArray
而不是测试length
属性。另外,最好将myFunction
绑定到null
而不是此
这听起来很像一个问题,因为如果这是您的意思,它在vanilla JS中是可行的。您也可以缩短控制语句,但总的来说,不,检查长度是一个好技巧。你可以考虑使用Type作为一种更明确的选择,但那只是随地吐痰。因此,在Load中没有内置的东西可以取代整个I/OR语句?非常聪明的解决方案!我猜定义为f1(func,…args)
,myFunction
可以作为第一个参数传递,例如f1(myFunction,o1,o2)
。