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)