查看json树,我正在搜索属于客户的所有订阅。在Ruby中,我可以说
customer.map(&:subscriptions).flatten
JS中的map flatten是否有等效函数?
答案 0 :(得分:1)
您可以使用javascript map的reduce和Array方法:
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()