Javascript 是否只有当元素是数组时才有方法调用map方法?

Javascript 是否只有当元素是数组时才有方法调用map方法?,javascript,arrays,Javascript,Arrays,我正在使用查询字符串库解析URL中的查询参数。 当查询参数的格式为?foo=bar时,库返回如下对象: { foo: bar } { foo: [bar1, bar2] } [].concat(myObject.foo).map(myFunction) 当形式为?foo=bar1,bar2时,对象如下所示: { foo: bar } { foo: [bar1, bar2] } [].concat(myObject.foo).map(myFunction) 我想在myO

我正在使用查询字符串库解析URL中的查询参数。 当查询参数的格式为
?foo=bar
时,库返回如下对象:

{
  foo: bar
}
{
  foo: [bar1, bar2]
}
[].concat(myObject.foo).map(myFunction)
当形式为
?foo=bar1,bar2
时,对象如下所示:

{
  foo: bar
}
{
  foo: [bar1, bar2]
}
[].concat(myObject.foo).map(myFunction)
我想在
myObject.foo
的每个元素上应用函数
myFunction
,以获得类似
[myFunction(bar)]
[myFunction(bar1),myFunction(bar2)]

有没有一种方法可以很容易地用类似

myObject.foo.mapOrApply(myFunction)
不必检查这是否是一个数组

现在,我被迫这样做,我觉得这很不美观:

Array.isArray(myObject.foo)
   ? myObject.foo.map(myFunction)
   : [myFunction(myObject.foo)];
您可以这样使用:

{
  foo: bar
}
{
  foo: [bar1, bar2]
}
[].concat(myObject.foo).map(myFunction)
myObject.foo
是单个值或数组时,此选项起作用

下面是一个片段:

constgetmapped=({foo},回调)=>[].concat(foo).map(回调);
//将单个值加倍
log(getMapped({foo:1},n=>2*n))
//为数组中的每个项添加前缀“new”
log(getMapped({foo:[“bar1”,“bar2”]},str=>“new”+str))
您可以这样使用:

{
  foo: bar
}
{
  foo: [bar1, bar2]
}
[].concat(myObject.foo).map(myFunction)
myObject.foo
是单个值或数组时,此选项起作用

下面是一个片段:

constgetmapped=({foo},回调)=>[].concat(foo).map(回调);
//将单个值加倍
log(getMapped({foo:1},n=>2*n))
//为数组中的每个项添加前缀“new”
log(getMapped({foo:[“bar1”,“bar2”]},str=>“new”+str))
您可以简单地:

 [].concat(myObject.foo).map(myFunction)
你可以简单地:

 [].concat(myObject.foo).map(myFunction)

如果需要,您可以转换为数组,然后使用函数进行映射

result = (Array.isArray(myObject.foo) ? myObject.foo : [myObject.foo]).map(myFunction);

如果需要,您可以转换为数组,然后使用函数进行映射

result = (Array.isArray(myObject.foo) ? myObject.foo : [myObject.foo]).map(myFunction);
可能的重复可能的重复