Javascript 反应:按组件中的值按多维数组对象分组
如何在组件中按值对多维数组对象进行分组 我需要按页分组数组,并获得每页的文本。我使用了map和reduce,但是没有得到很好的结果。我在react本地项目上工作。由于某些原因,JS功能组无法工作 为该数组编写代码的最佳方法是什么 我有这个阵列:Javascript 反应:按组件中的值按多维数组对象分组,javascript,arrays,reactjs,react-native,Javascript,Arrays,Reactjs,React Native,如何在组件中按值对多维数组对象进行分组 我需要按页分组数组,并获得每页的文本。我使用了map和reduce,但是没有得到很好的结果。我在react本地项目上工作。由于某些原因,JS功能组无法工作 为该数组编写代码的最佳方法是什么 我有这个阵列: { "number": 1, "englishName": "Name 1", "items": [ { "text": "Some text",
{
"number": 1,
"englishName": "Name 1",
"items": [
{
"text": "Some text",
"page": 1,
},
{
"text": "Some text",
"page": 1,
}
]
},
{
"number": 2,
"englishName": "Name 2",
"items": [
{
"text": "Some text",
"page": 2,
},
{
"text": "Some text",
"page": 2,
}
]
},
{
"number": 3,
"englishName": "Name 3",
"items": [
{
"text": "Some text",
"page": 3,
},
{
"text": "Some text",
"page": 4,
}
]
}
]
我需要这样的阵列
[
{
"page 1": [
{
"text": "Some text",
"englishName": "Name 1",
},
{
"text": "Some text",
"englishName": "Name 2",
}
]
},
{
"page 2": [
{
"text": "Some text",
"englishName": "Name 2",
},
{
"text": "Some text",
"englishName": "Name 2",
}
]
},
...
]
看来这对你有用 这将为您提供一个对象:
const allPages = array.reduce((acc, curr) => {
curr.items.forEach((page) => {
var pageKey = `page ${page.page}`
if(!acc[pageKey]){
acc[pageKey] = []
}
acc[pageKey].push({ text: page.text, englishName: curr.englishName })
})
return acc
}, {})
您还可以将该对象转换为数组:
const finalArr = Object.entries(allPages).map(([page, array]) => {
return {
[page]: array
}
})
见示例:
变量数组=[{
编号:1,
名字1,
项目:[
{
文本:一些文本,
页码:1,
},
{
文本:一些文本,
页码:1,
}
]
},
{
编号:2,
名字2,
项目:[
{
文本:一些文本,
页码:2,
},
{
文本:一些文本,
页码:2,
}
]
},
{
编号:3,
名字3,
项目:[
{
文本:一些文本,
页码:3,
},
{
文本:一些文本,
页码:4,
}
]
}
]
const allPages=array.reduceac,curr=>{
curr.items.forEachpage=>{
var pageKey=`page${page.page}`
如果!acc[页面键]{
acc[pageKey]=[]
}
acc[pageKey]。按{text:page.text,englishName:curr.englishName}
}
返回acc
}, {}
const finalArr=Object.entriesallPages.map[页面,数组]=>{
返回{
[第页]:数组
}
}
console.logallPages
console.logfinalarrp请显示您实现需求的尝试。此外,由此产生的结构看起来很奇怪。是否确实需要具有单个键的对象数组而不是具有多个键的单个对象?