RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 947070
Accepted
Jack
Jack
Asked:2020-02-20 18:01:03 +0000 UTC2020-02-20 18:01:03 +0000 UTC 2020-02-20 18:01:03 +0000 UTC

如何处理多级数据?

  • 772

例如,如果我的房子有房间有椅子,我该如何组织数据结构以便更方便地使用它们(删除添加、重新排序、更改)?最简单的选择是创建一组房屋对象,每个对象都有一组房间,每个房间都有一组椅子。但这非常不方便。

javascript
  • 2 2 个回答
  • 10 Views

2 个回答

  • Voted
  1. Best Answer
    Kvilios
    2020-02-20T18:34:52Z2020-02-20T18:34:52Z

    但这非常不方便。

    编写辅助函数,通过调用可以引用所需的房子、房间或椅子(以人类可读的形式):

    const houses = [{ // многоуровневые данные (дома, квартиры, стулья)
      name: '1/52 А',
      rooms: [{
        name: '10',
        chairs: ['Стул 1', 'Стул 2']
      }]
    }, {
      name: '6',
      rooms: [{
        name: '10',
        chairs: ['Стул 1', 'Стул 2', 'Стул 3']
      }, {
        name: '11',
        chairs: ['Стул 1', 'Стул 2', 'Стул 3', 'Стул 4']
      }]
    }, {
      name: '3 корп. 4',
      rooms: [{
        name: '55',
        chairs: ['Стул 1']
      }]
    }];
    
    console.log('Дом:', getHouseByName('1/52 А'));
    
    console.log('Комната:', getRoomByName('6', '11'));
    
    console.log('Стул:', getChairByName('3 корп. 4', '55', 'Стул 1'));
    
    console.log('Стулья:', getAllChairs('6', '10'));
    
    // функции-хелперы
    
    function getHouseByName(houseName) { // получаем нужный дом
      return houses.find((el) => el.name === houseName);
    }
    
    function getRoomByName(houseName, roomName) { // получаем нужную квартиру
      return getHouseByName(houseName).rooms.find((el) => el.name === roomName);
    }
    
    function getChairByName(houseName, roomName, chairName) { // получаем нужный стул
      return getAllChairs(houseName, roomName).find((el) => el === chairName);
    }
    
    function getAllChairs(houseName, roomName) { // получаем все стулья
      return getRoomByName(houseName, roomName).chairs;
    }

    • 1
  2. Саске
    2020-02-20T18:38:18Z2020-02-20T18:38:18Z
    <script>
    
        const ArrayHouse = [
            {
                name: 'house1',
                rooms: [
                    {
                        number: 3,
                        chairs: [
                            {
                                color: 'red',
                                height: 10,
                                width: 45
                            },
                            {
                                color: 'red',
                                height: 10,
                                width: 45
                            },
                            {
                                color: 'red',
                                height: 10,
                                width: 45
                            }
                        ]
                    },
                    {
                        number: 1,
                        chairs: [
                            {
                                color: 'green',
                                height: 10,
                                width: 45
                            },
                            {
                                color: 'black',
                                height: 10,
                                width: 45
                            },
                            {
                                color: 'violet',
                                height: 10,
                                width: 45
                            }
                        ]
                    }
                ]
            },
            {
                name: 'house2',
                rooms: [
                    {
                        number: 3,
                        chairs: [
                            {
                                color: 'red',
                                height: 10,
                                width: 45
                            },
                            {
                                color: 'red',
                                height: 10,
                                width: 45
                            },
                            {
                                color: 'red',
                                height: 10,
                                width: 45
                            }
                        ]
                    },
                    {
                        number: 1,
                        chairs: [
                            {
                                color: 'green',
                                height: 10,
                                width: 45
                            },
                            {
                                color: 'black',
                                height: 10,
                                width: 45
                            },
                            {
                                color: 'violet',
                                height: 10,
                                width: 45
                            }
                        ]
                    },
                    {
                        number: 15,
                        chairs: [
                            {
                                color: 'green',
                                height: 102,
                                width: 45
                            },
                            {
                                color: 'white',
                                height: 110,
                                width: 45
                            },
                            {
                                color: 'violet',
                                height: 150,
                                width: 45
                            }
                        ]
                    }
                ]
            }
        ]
    
        class HouseContext {
    
            constructor() {
                console.log(this.getHouseByName('house1'));
                this.addHouse({
                    name: 'addHouse',
                    rooms: []
                });
                console.log(ArrayHouse);
    
                console.log(this.getRoomBuNumber('house2', 1));
    
                this.addRoom('addHouse', {
                    number: 228,
                    chairs:[]
                });
    
                console.log(ArrayHouse);
            }
    
            getHouseByName(name) {
                return ArrayHouse.find(v => v.name == name);
            }
    
            addHouse(house) {
                ArrayHouse.push(house);
            }
    
            getRoomBuNumber(houseName, roomNumber) {
                return ArrayHouse.find(v => v.name == houseName).rooms.find(v => v.number == roomNumber);
            }
    
            addRoom(houseName, room) {
                ArrayHouse.find(v => v.name == houseName).rooms.push(room);
            }
        }
    
        new HouseContext();
    
    
    </script>
    
    • 1

相关问题

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    根据浏览器窗口的大小调整背景图案的大小

    • 2 个回答
  • Marko Smith

    理解for循环的执行逻辑

    • 1 个回答
  • Marko Smith

    复制动态数组时出错(C++)

    • 1 个回答
  • Marko Smith

    Or and If,elif,else 构造[重复]

    • 1 个回答
  • Marko Smith

    如何构建支持 x64 的 APK

    • 1 个回答
  • Marko Smith

    如何使按钮的输入宽度?

    • 2 个回答
  • Marko Smith

    如何显示对象变量的名称?

    • 3 个回答
  • Marko Smith

    如何循环一个函数?

    • 1 个回答
  • Marko Smith

    LOWORD 宏有什么作用?

    • 2 个回答
  • Marko Smith

    从字符串的开头删除直到并包括一个字符

    • 2 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5