我正在使用查询字符串库来解析来自 URL 的查询参数。
当查询参数为 ?foo=bar
形式时,lib 返回如下对象:
{
foo: bar
}
当处于 ?foo=bar1,bar2
形式时,对象如下所示:
{
foo: [bar1, bar2]
}
我想在 myObject.foo
的每个元素上应用函数 myFunction
以获得类似 [myFunction(bar)]
或 [myFunction(bar1), myFunction(bar2)]
有没有办法用类似的东西轻松做到这一点
myObject.foo.mapOrApply(myFunction)
无需检查这是否是一个数组?
现在,我不得不这样做,而且我觉得这很不美观:
Array.isArray(myObject.foo)
? myObject.foo.map(myFunction)
: [myFunction(myObject.foo)];
最佳答案
你可以使用 concat
像这样:
[].concat(myObject.foo).map(myFunction)
这在 myObject.foo
是单个值或数组时有效
这是一个片段:
const getMapped = ({ foo }, callback) => [].concat(foo).map(callback);
// double a single value
console.log(getMapped({ foo: 1 }, n => 2 * n))
// prefix "new" to every item in the array
console.log(getMapped({ foo: ["bar1", "bar2"] }, str => "new " + str))
关于javascript - 有没有办法只在元素是数组时调用 map 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56885478/