Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/414.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 反应:按组件中的值按多维数组对象分组_Javascript_Arrays_Reactjs_React Native - Fatal编程技术网

Javascript 反应:按组件中的值按多维数组对象分组

Javascript 反应:按组件中的值按多维数组对象分组,javascript,arrays,reactjs,react-native,Javascript,Arrays,Reactjs,React Native,如何在组件中按值对多维数组对象进行分组 我需要按页分组数组,并获得每页的文本。我使用了map和reduce,但是没有得到很好的结果。我在react本地项目上工作。由于某些原因,JS功能组无法工作 为该数组编写代码的最佳方法是什么 我有这个阵列: { "number": 1, "englishName": "Name 1", "items": [ { "text": "Some text",

如何在组件中按值对多维数组对象进行分组

我需要按页分组数组,并获得每页的文本。我使用了map和reduce,但是没有得到很好的结果。我在react本地项目上工作。由于某些原因,JS功能组无法工作

为该数组编写代码的最佳方法是什么

我有这个阵列:

{
        "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请显示您实现需求的尝试。此外,由此产生的结构看起来很奇怪。是否确实需要具有单个键的对象数组而不是具有多个键的单个对象?