gpt4 book ai didi

javascript - JavaScript 对象的键是否存储在内存中?

转载 作者:行者123 更新时间:2023-12-01 17:15:27 24 4
gpt4 key购买 nike

我想知道它是否使用更多的内存来存储具有相同键的对象数组,而不仅仅是存储包含值的数组数组。

const arrayOfObjects = [
{key1: "val1", key2: "val2", key3: "val4", key4: "val5"},
{key1: "value1", key2: "value2", key3: "value4", key4: "value5"},
{key1: "value-1", key2: "value-2", key3: "value-4", key4: "value-5"}
]
const arrayOfArrays = [
["val1", "val2", "val3", "val4"],
["value1", "value2", "value3", "value4"],
["value-1", "value-2", "value-3", "value-4"]
]

arrayOfObjects 会比 arrayOfArrays 占用更多的内存吗?
更准确地说, key 是否也存储在内存中?
另外,我经常使用 JS 对象来制作哈希表,以加速算法,但这样做有什么限制?
谢谢您的帮助。

最佳答案

JavaScript 本身并没有指定对象的内存布局,但所有常见的实现都使用类似于 object shapes of the V8 engine 的东西。 .由于所有对象都具有相同的形状,因此它们的属性名称将只存储一次,并由数组中的所有对象共享,无论有多少对象。与数组相比的开销(如果有的话)在您的算法/数据结构设计中不值得考虑。

I often use JS Objects to make hash tables, to accelerate algorithms, but what are the limits of doing that?


如果您动态添加太多属性,甚至 delete,引擎将使用不同的对象表示。他们。但是,对于哈希表,您应该使用 Map 在现代 javascript 中,它从头开始针对此用例进行了优化,并且比对象更有效。

关于javascript - JavaScript 对象的键是否存储在内存中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63180696/

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