javascript - 通过每个索引对象值从多维数组创建数组
问题描述
这是我的主数组的示例:
[
{
'data': [{'value': 'Red'}, {'value': 'Small'}, {'value': 'Good'}]
},
{
'data': [{'value': 'Black'}, {'value': 'Medium'}, {'value': 'Bad'}]
},
{
'data': [{'value': 'White'}, {'value': 'Large'}, {'value': 'Best'}]
}
]
我想作为输出:
[
['Red', 'Black', 'White'], // all values from first index of data array
['Small', 'Medium', 'Large'], // all values from second index of data array
['Good', 'Bad', 'Best'] // all values from third index of data array
]
我已经尝试过forEach
,for...in
等filter
。但我没有成功获得以前的输出。
解决方案
你可以使用reduce()
然后在reduce循环中使用forEach()
。在forEach
循环中使用索引来确定要推送的数组。如果该索引处还没有值,请创建一个新数组并推入:
let data = [{'data': [{'value': 'Red'},{'value': 'Small'},{'value': 'Good'}]},{'data': [{'value': 'Black'},{'value': 'Medium'},{'value': 'Bad'}]},{'data': [{'value': 'White'},{'value': 'Large'},{'value': 'Best'}]}]
let arr = data.reduce((arr, item) => { // look at each item in the data array
item.data.forEach(({value}, index) => { // look at each item in the item.data array
(arr[index] || (arr[index] = [])).push(value) // create and array if necessary and push value into it
})
return arr
},[])
console.log(arr)
推荐阅读
- java - 如何配置 Spring 以使用 @RequestBody 注释将 JSON 反序列化为 BigDecimal
- python - 詹金斯的工作卡在 git push 命令上
- java - 为什么 Java 中的内置类没有默认构造函数,但在创建该类的对象时需要传递参数?
- java - 构造函数中的复杂初始化
- angular - 如何在其他地方使用订阅的 observable?
- mongodb - 如何修复 MongoError:GKE 上没有可用的 mongos 代理
- c - 尝试为文件 IO 创建多个线程时出现分段错误:
- twitter-bootstrap - 主题引导以更改表单输入活动颜色
- git - 有没有办法通过 git log 实现 Graph by Branch 功能?
- machine-learning - 提交后在 Kaggle 中丢失输出训练模型