gpt4 book ai didi

javascript - 将数组索引处的值更改为 falsey 是否会使数组变得稀疏?

转载 作者:行者123 更新时间:2023-12-01 00:22:40 24 4
gpt4 key购买 nike

稀疏数组示例:

// first
let array = new Array(3);
// second
let array = [1,,3];
// third
let array = [1, 2, 3]; // not sparse
delete array[1]; // now it is
// fourth
let array = [1,2 3]; // not sparse
array[1000] = 'foo'; // now it is

将现有值设置为 undefinednull 是否也会使其稀疏?

<小时/>

我有一个对象数组,我需要以某种方式表达空槽而不使其变得稀疏,因为它随后在现代浏览器引擎中被标记为稀疏,并且查找速度与对象键查找大致相同 - 它需要遍历原型(prototype)链(比索引查找慢很多)。

最佳答案

没有。数组对象在该数组索引处仍将具有自己的属性:

const arr = [1, 2, 3];
arr[0] = null;
arr[1] = undefined;
console.log(arr.hasOwnProperty('0'));
console.log(arr.hasOwnProperty('1'));

与稀疏数组相比,它不会:

const arr = [ ,  , 3];
console.log(arr.hasOwnProperty('0'));
console.log(arr.hasOwnProperty('1'));

it's then flagged as sparse in modern browser engines and lookup speed is about the same as object key lookup - it needs to walk the prototype chain (a lot slower than index lookup).

访问普通非稀疏数组的索引如果在实例上找不到索引,则必须遍历原型(prototype)链(尽管几乎永远不会找到某些东西):

Object.prototype[4] = 'foo';
const arr = [0, 1];
console.log(arr[4]);

如果我是你,我会使用带有数字索引的对象,以避免稀疏数组。如果您的脚本中存在性能瓶颈,那么它几乎肯定不会出现在这部分代码中(这意味着在这里担心性能并没有真正的帮助)。

关于javascript - 将数组索引处的值更改为 falsey 是否会使数组变得稀疏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59279783/

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