Javascript 是否只有当元素是数组时才有方法调用map方法?
我正在使用查询字符串库解析URL中的查询参数。 当查询参数的格式为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
?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);
可能的重复可能的重复