繁体   English   中英

通过元素 Javascript 将数组推入另一个数组

[英]Push Array in another Array by element Javascript

我有两个数组,第一个数组是由属性组成的文章数组,第二个数组由第一个数组的元素articles_id 组成,如果articles.id =,我想将第一个数组与new_array_articles_sub_categories 中的第二个数组合并= subcategories.article_id

articles = [
    {
        id: 1,
        title: xxx,
        description: desc1
    },
    {
        id: 2,
        title: yyy,
        description: desc2
    }
]


subcategories = [
    {
        id: 1,
        name: xxx,
        article_id: 1
    },
    {
        id: 2,
        name: yyy,
        article_id: 1
    }
]


new_array_articles_sub_categories = [
    {
        id: 1,
        title: xxx,
        description: desc1
        subcategories: [
            [0] : [
                id: 1,
                name: xxx,
            ]
            [1] : [
                id: 2,
                name: yyy,
            ]
        ]
    },
    {
        id: 2,
        title: yyy,
        description: desc2,
        subcategories: []
    }
]

我试试这个,但在 output 中结果不一样

var new_array_articles_sub_categories = []
for (var i = 0; i < articles.length; i++) {
    for (var k = 0; k < subcategories.length; k++) {
        if(articles[i].id == subcategories[k].article_id){
            new_array_articles_sub_categories.push({

                articles : articles[i],
                subcategories : subcategories[k],
            })
        }
    }
}

这是工作片段:

 var articles = [{ id: 1, title: "xxx", description: "desc1" }, { id: 2, title: "yyy", description: "desc2" } ] var subcategories = [{ id: 1, name: "xxx", article_id: 1 }, { id: 2, name: "yyy", article_id: 1 } ] var new_array_articles_sub_categories = []; for (var i = 0; i < articles.length; i++) { var new_article = { id: articles[i].id, title: articles[i].title, description: articles[i].description, subcategories: [] }; new_array_articles_sub_categories.push(new_article); for (var ii = 0; ii < subcategories.length; ii++) { if (articles[i].id == subcategories[ii].article_id) { new_article.subcategories.push({ id: subcategories[ii].id, name: subcategories[ii].name }) } } } console.log(new_array_articles_sub_categories);

您可以使用 hash 表而不是嵌套循环。

这种方法只需要两个循环。

 const articles = [{ id: 1, title: "xxx", description: "desc1" }, { id: 2, title: "yyy", description: "desc2" }], subcategories = [{ id: 1, name: "xxx", article_id: 1 }, { id: 2, name: "yyy", article_id: 1 }], subs = subcategories.reduce((r, o) => ((r[o.article_id]??= []).push(o), r), {}), result = articles.map(o => ({...o, subcategories: subs[o.id] || [] })); console.log(result);
 .as-console-wrapper { max-height: 100%;important: top; 0; }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM