地图在JS中展平?

时间:2016-05-22 09:49:30

标签: javascript ruby node.js dictionary

查看json树,我正在搜索属于客户的所有订阅。在Ruby中,我可以说

customer.map(&:subscriptions).flatten

JS中的map flatten是否有等效函数?

1 个答案:

答案 0 :(得分:1)

您可以使用javascript mapreduceArray方法:

customers = [{ subscriptions: [{ id: 1 }, { id: 2}]}, { subscriptions: [{ id: 5 }]}]

customers
  .map(function(it) { return it.subscriptions })
  .reduce(function(memo, it) { return memo.concat(it) }, [])

或使用一些ES6语法糖:

customers = [{ subscriptions: [{ id: 1 }, { id: 2}]}, { subscriptions: [{ id: 5 }]}]

customers
  .map(({ subscriptions }) => subscriptions)
  .reduce((memo, it) => (memo.concat(it)), [])

同样来自Ruby,您可能会发现RubyJS很有趣 - 它将ruby标准库移植到javascript。所以你可以写

R(customers, true).map(({ subscriptions }) => subscriptions).flatten().toNative()