Javascript 数字/字符串数组和对象数组的空间复杂度是否存在差异?
平均1D数组(如:ar=[1,2,3….n])和对象数组(如:ar=[{name:'a',id:1},…{name:'an',id:n})的空间复杂度是否存在差异?此外,如果对象数组中的每个对象中有更多属性,这将如何影响空间复杂度?如果对象表示恒定空间,则空间复杂度不会改变。只有一个不同的系数: 例如,n个数字的数组占用+bn空间,其中a是数组开销:Javascript 数字/字符串数组和对象数组的空间复杂度是否存在差异?,javascript,arrays,ecmascript-6,Javascript,Arrays,Ecmascript 6,平均1D数组(如:ar=[1,2,3….n])和对象数组(如:ar=[{name:'a',id:1},…{name:'an',id:n})的空间复杂度是否存在差异?此外,如果对象数组中的每个对象中有更多属性,这将如何影响空间复杂度?如果对象表示恒定空间,则空间复杂度不会改变。只有一个不同的系数: 例如,n个数字的数组占用+bn空间,其中a是数组开销: [1, 2, 3, 4] 如果数组中有带数字的对象,例如: [{x: 1}, {x: 2}, {x: 3}, {x: 4}] …然后,占用
[1, 2, 3, 4]
如果数组中有带数字的对象,例如:
[{x: 1}, {x: 2}, {x: 3}, {x: 4}]
…然后,占用的空间是a+cn,其中c是一个常数,大于前面提到的b。但这仍然是相同的空间复杂度,即就数组的长度而言,它是线性的
如果对象恰好有5个属性而不是1,则仍然是这样,……在您的示例中,有一个保留:字符串可以具有任意长度,因此如果您有字符串属性(或bigint属性或嵌套数组)然后,您必须同意它们有一个固定的最大长度,或者将该尺寸作为确定空间复杂度的第二个变量。深度嵌套结构本质上并不表示在相同大小的平面阵列上内存和计算迭代的任何增加。感谢您的回答。可能是什么原因是?数组对javascript存储引擎的唯一影响是内存消耗。对象、字符串、布尔值都是由字节表示的
长度。因此,与具有嵌套值的对象长度相同的字符串不会对存储产生任何额外影响。从计算角度来说在精确位置访问深度嵌套对象,例如myArray[0]。标题['tree][0]
对myArray[0]没有任何性能影响
。但是,当遍历数组及其子元素时,访问树中位置的成本会更高。挑剔:固定的最大平均长度。如果一半嵌套元素的长度为1,四分之一的元素的长度为2,八分之一的元素的长度为4等,则整个数组的空间复杂度仍然是线性的,即使较大e数组可能包含一些非常长的元素。