首页 > 解决方案 > 如何从此嵌套对象数组中获取最大的 category_id?

问题描述

我是 reactjs 的初学者。我对循环嵌套对象数组以从该数组中找到最大的 category_Id 有疑问。我试过但我不知道如何在这里得到结果我们没有从最后一个索引数组中得到最大的 category_id 因为它可能在前面的索引数组中可用

0:
categories: Array(19)
0: {category_id: "2", name: "Cold Mezes", parent_id: "1", status: "1", products: Array(11), …}
1: {category_id: "3", name: "Hot Mezes", parent_id: "1", status: "1", products: Array(14), …}
2: {category_id: "5", name: "Wraps", parent_id: "1", status: "1", products: Array(4), …}
3: {category_id: "8", name: "Vegetarian Dishes", parent_id: "1", status: "1", products: Array(6), …}
4: {category_id: "9", name: "Authentic Dishes", parent_id: "1", status: "1", products: Array(5), …}
5: {category_id: "10", name: "Casseroles", parent_id: "1", status: "1", products: Array(3), …}
6: {category_id: "11", name: "Sharing Platter", parent_id: "1", status: "1", products: Array(2), …}
7: {category_id: "12", name: "Salads", parent_id: "1", status: "1", products: Array(4), …}
8: {category_id: "13", name: "Kids Menu", parent_id: "1", status: "1", products: Array(6), …}
9: {category_id: "14", name: "Side Dishes", parent_id: "1", status: "1", products: Array(5), …}
10: {category_id: "16", name: "Desserts", parent_id: "1", status: "1", products: Array(19), …}
11: {category_id: "6", name: "Yougurtlu Dishes", parent_id: "1", status: "1", products: Array(3), …}
12: {category_id: "7", name: "Fish Dishes", parent_id: "1", status: "1", products: Array(6), …}
13: {category_id: "4", name: "Main Course", parent_id: "1", status: "1", products: Array(17), …}
14: {category_id: "17", name: "Pasta", parent_id: "1", status: "1", products: Array(4), …}
15: {category_id: "18", name: "Turkish Breakfast", parent_id: "1", status: "1", products: Array(5), …}
16:
   categories: Array(11)
     0: {category_id: "20", name: "Cocktails", parent_id: "19", status: "1", products: Array(12), …}
     1: {category_id: "21", name: "Mocktails", parent_id: "19", status: "1", products: Array(5), …}
     2: {category_id: "22", name: "Beers", parent_id: "19", status: "1", products: Array(11), …}
     3: {category_id: "23", name: "Hot Drinks", parent_id: "19", status: "1", products: Array(13), …}
     4: {category_id: "24", name: "Soft Drinks", parent_id: "19", status: "1", products: Array(22), …}
     5: {category_id: "25", name: "White Wines", parent_id: "19", status: "1", products: Array(14), …}
     6: {category_id: "26", name: "Red Wines", parent_id: "19", status: "1", products: Array(13), …}
     7:
       categories: Array(7)
        0:
          categories: []
          category_id: "30"
          name: "Gin"
          parent_id: "27"
          products: (5) [{…}, {…}, {…}, {…}, {…}]
          status: "1"
          __proto__: Object
        1: {category_id: "31", name: "Rum", parent_id: "27", status: "1", products: Array(4), …}
        2: {category_id: "32", name: "Whisky", parent_id: "27", status: "1", products: Array(4), …}
        3: {category_id: "33", name: "Brandy", parent_id: "27", status: "1", products: Array(3), …}
        4: {category_id: "34", name: "Tequila", parent_id: "27", status: "1", products: Array(2), …}
        5: {category_id: "35", name: "Vodka", parent_id: "27", status: "1", products: Array(3), …}
        6: {category_id: "36", name: "Liqueurs", parent_id: "27", status: "1", products: Array(11), …}
           length: 7
        __proto__: Array(0)
       category_id: "27"
       name: "Spirits"
       parent_id: "19"
       products: []
       status: "1"
       __proto__: Object
   8: {category_id: "28", name: "Rose Wines", parent_id: "19", status: "1", products: Array(4), …}       
      length: 9
      __proto__: Array(0)
      category_id: "19"
      name: "Drinks"
      parent_id: "1"
      products: [{…}]
      status: "1"
      __proto__: Object

标签: javascriptarraysreactjsmultidimensional-arraynested-loops

解决方案


使用recursive方法并比较idmax变量。

const categories = [
  { category_id: "1", categories: [] },
  {
    category_id: "2",
    categories: [
      {
        category_id: "10",
        categories: [{ category_id: "100", categories: [] }],
      },
    ],
  },
  { category_id: "3", categories: [] },
];

let max = -1;

const maxCat = (arr) => {
  arr.forEach(({ category_id, categories }) => {
    if (+category_id > max) {
      max = +category_id;
    }
    if (categories && categories.length > 0) {
      maxCat(categories);
    }
  });
};

maxCat(categories);
console.log(max);


推荐阅读