gpt4 book ai didi

javascript - 遍历 JS 数组的定义元素

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:06:08 25 4
gpt4 key购买 nike

我正在使用 JS 数组将 ID 映射到实际元素,即键值存储。我想遍历所有元素。我尝试了几种方法,但都有其注意事项:

for (var item in map) {...}

遍历数组的所有属性,因此它也将包括 Array.prototype 的函数和扩展。例如,将来有人加入原型(prototype)库会破坏现有代码。

var length = map.lenth;
for (var i = 0; i < length; i++) {
var item = map[i];
...
}

确实有效,但就像

$.each(map, function(index, item) {...});

它们遍历索引 0..max(id) 的整个范围,这有可怕的缺点:

var x = [];
x[1]=1;
x[10]=10;
$.each(x, function(i,v) {console.log(i+": "+v);});

0: undefined
1: 1
2: undefined
3: undefined
4: undefined
5: undefined
6: undefined
7: undefined
8: undefined
9: undefined
10: 10

当然,我的 ID 也不会像一个连续的序列。此外,它们之间可能存在巨大差距,因此出于性能原因,在后一种情况下跳过 undefined 是 Not Acceptable 。如何才能安全地仅遍历数组的已定义元素(以一种适用于所有浏览器和 IE 的方式)?

最佳答案

使用hasOwnPropertyfor ... in 中以确保不包括原型(prototype)添加:

for (var item in map)
if (map.hasOwnProperty(item)) {
// do something
}

关于javascript - 遍历 JS 数组的定义元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4671820/

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