javascript - 有没有办法只在元素是数组时调用 map 方法?

标签 javascript arrays

我正在使用查询字符串库来解析来自 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/

相关文章:

c - c中数组和指针的名称

c - 将指针数组结构传递给函数

javascript - JS - 在对象数组上使用 .every 方法

javascript - 使用原始数据发布请求在 mocha 上抛出 400 错误请求

javascript - jQuery.ajax 调用在 Chrome 扩展中失败

javascript - PyMongo 匹配 JavaScript 正则表达式对象

php - 如果值存在于另一个数组中,如何递归过滤数组

javascript - 单击 Javascript Alert 中的按钮在新窗口中打开弹出窗口

javascript - 使用 HTML 背景视频创建视差效果

javascript - 3 变量序列和