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

标签 javascript jquery

我正在使用 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/

相关文章:

javascript - 在JQuery中使用switch语句时如何将元素数据传递到case中?

javascript - 如何将查询字符串添加到页面网址?

javascript - 通过 Jquery 接收焦点时打开下拉菜单

javascript - Chrome 扩展中的持久服务 worker

javascript - 我的 Json 数组只返回最后一个数组。如何解决?

javascript - JQueryUI - 同时向左/向右滑动 div

javascript - 使用 JavaScript 函数更改函数

jquery - 从jsfiddle获取图片资源

javascript - 如何使用 Sidr 创建可折叠子菜单项?

javascript - 无法将 div 准确定位在另一个元素上