通过json树,我正在搜索属于客户的所有订阅。在鲁比,我可以说

customer.map(&:subscriptions).flatten

js中的map flatten有等价的函数吗?

最佳答案

您可以使用javascript的mapreduce方法:

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,您可能会发现Array很有趣-它将ruby标准库移植到javascript。所以你可以写
R(customers, true).map(({ subscriptions }) => subscriptions).flatten().toNative()

关于javascript - map 在JS中展平?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37372770/

10-11 13:37