javascript - 如何从此嵌套对象数组中获取最大的 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
解决方案
使用recursive
方法并比较id
与max
变量。
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);
推荐阅读
- node.js - 节点中已删除文件的文件信息和文件时间戳,chokidar
- php - PHP:如何将记录从一个表复制到另一个但它必须复制到某个值
- php - Laravel 5.6 Ajax Post 500 内部服务器错误
- angular - 角度动画值已更改但不起作用
- javascript - 颜色切换按钮
- c++ - 如何修复此语句可能会通过 [-Werror=implicit-fallthrough=]?
- python - 同时打开一个 Tkinter 窗口和一个 Pyglet 窗口
- windows - 从窗口中提取所有文本
- javascript - 不同形状的交叉过滤数据
- angular - Angular 6 测试 - Jasmine - 模拟链式承诺