gpt4 book ai didi

javascript - 我应该如何创建一个在不使用数组的情况下存储带有子 id 的 id 的对象?

转载 作者:行者123 更新时间:2023-12-02 01:30:50 25 4
gpt4 key购买 nike

我需要将数据发送到具有多个 id 且其中包含子 id 的服务器。目前我正在使用数组,但因为我需要处理 dom 上的每个 id 和子 id(当前使用 vue),所以我一次又一次地使用大量 find() 和 findIndex() 。如果有办法直接使用 ids,我可以使用 order[id][subid] 访问或检查它们。

目前我正在使用这个结构:

let data = {
orders: [
{ order_id: 4, items: [{ item_id: 6 }, { item_id: 7 }, { item_id: 8 }] },
{ order_id: 1, items: [{ item_id: 1 }, { item_id: 2 }, { item_id: 3 }] },
];
}

例如,当我想要检查订单项是否已选中时,我必须这样做

function check(order_id, item_id) {
let order_i = data.orders.findIndex((o) => o.order_id == order_id);

if (order_i != -1) {
let item_i = data.orders[order_i].items.findIndex((o) => o.item_id == item_id);
}

if (item_i != -1) {
return true;
} else {
return false;
}
}

或者类似的东西。我想怎样使用它

let data = {
orders: {
4: {6:'',7:'',8:''},
1: {1:'',2:'',3:''}
}
}

然后我就使用data.orders?.[order_id]?.[item_id]

我不确定这是否是一个好方法。看起来并非如此。在不使用数组的情况下,我可以使用什么结构来实现此目的?

最佳答案

我认为你想要的数据结构是Map。它存储键值对,并且可以在恒定时间内检索特定键的值(而不是搜索整个列表)。 set(key, value)get(key) 方法用于与 Map 对象交互。

如果所有订单都存储在这个结构中,你应该使用id作为数组中的索引,这将是最有效的。如果订单不是连续的(并非所有 id 都存在),您可以使用一个 Map 来表示订单,并使用另一个 Map 来表示项目。如果平均而言,给定订单中的项目不多,那么使用数组应该没问题。

了解更多: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map

关于javascript - 我应该如何创建一个在不使用数组的情况下存储带有子 id 的 id 的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73351770/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com