javascript - 展平数组对象的数组
问题描述
我有一系列类别,其中我有项目。我宁愿想要一个项目数组,但我也想要项目对象内的类别的一些属性
基本上我想把它弄平:
[
{catname: "caregory1", items: [{ name: "item1" }, {name: "item2"}] }
{catname: "caregory2", items: [{ name: "item3" }, {name: "item4"}, {name: "item5"}] }
]
进入这个?
[
{catname: "caregory1", name: "item1" }
{catname: "caregory1", name: "item2" }
{catname: "caregory2", name: "item3" },
{catname: "caregory2", name: "item4" },
{catname: "caregory2", name: "item5" }
]
谢谢
解决方案
您可以为此使用flatMap()
和。map()
flatMap()
在主数组上使用并使用对象解构和传播 stynax 隔离属性items
和其余属性- 然后
map()
在数组的属性上使用并返回具有父项items
以外属性的嵌套对象的属性。items
const arr = [
{catname: "caregory1", items: [{ name: "item1" }, {name: "item2"}] },
{catname: "caregory2", items: [{ name: "item3" }, {name: "item4"}, {name: "item5"}] }
]
const res = arr.flatMap(({items,...rest}) => items.map(a => ({...a,...rest})))
console.log(res)
如果flatMap()
您使用的浏览器不支持,请使用concat()
const arr = [
{catname: "caregory1", items: [{ name: "item1" }, {name: "item2"}] },
{catname: "caregory2", items: [{ name: "item3" }, {name: "item4"}, {name: "item5"}] }
]
const res = [].concat(...arr.map(({items,...rest}) => items.map(a => ({...a,...rest}))))
console.log(res)
推荐阅读
- mongodb - 在 mongodb 中使用日期和时间对集合进行排序
- ios - How to compare array with nested array and print the matching pairs, not list of values that match? (Code helps explain)
- canvas - Tkinter 刷新/更新滚动条以适应画布内容
- c++ - ifstream.open() 在eclipse cdt 中设置failbit?
- python - Python中的高错误机器学习回归器算法 - XGBOOST Regressor
- javascript - 为 getElementsByTagName 指定索引
- reactjs - 在 Modal Open 上更改路线 - React
- node.js - Nuxt webapp 未在 Azure Linux 应用服务上启动:容器未在预期时间限制内启动
- python-3.x - 在没有 os.walk() 的情况下递归地扫描和列出文件
- tensorflow - Tensorflow.js:相同的模型,Python 和浏览器内 JavaScript 之间的预测存在重大差异?