首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Javascript中迭代数组键?

如何在Javascript中迭代数组键?
EN

Stack Overflow用户
提问于 2010-03-25 00:26:27
回答 12查看 343.4K关注 0票数 80

我用下面的代码创建了一个数组:

代码语言:javascript
复制
var widthRange = new Array();
widthRange[46] = { min:0,  max:52 };
widthRange[66] = { min:52, max:70 };
widthRange[90] = { min:70, max:94 };

我想在一个循环中得到46、66、90这三个值。我尝试了for (var key in widthRange),但这给了我一大堆额外的属性(我假设它们是对象上的函数)。我不能使用常规的for循环,因为值不是连续的。

EN

回答 12

Stack Overflow用户

回答已采纳

发布于 2010-03-25 00:29:28

您需要调用hasOwnProperty函数来检查是否在对象本身(与其原型相反)上实际定义了该属性,如下所示:

代码语言:javascript
复制
for (var key in widthRange) {
    if (key === 'length' || !widthRange.hasOwnProperty(key)) continue;
    var value = widthRange[key];
}

请注意,您需要对length进行单独检查。

但是,您在这里根本不应该使用数组;您应该使用常规对象。所有Javascript对象都作为关联数组运行。

例如:

代码语言:javascript
复制
var widthRange = { };  //Or new Object()
widthRange[46] = { sel:46, min:0,  max:52 };
widthRange[66] = { sel:66, min:52, max:70 };
widthRange[90] = { sel:90, min:70, max:94 };
票数 97
EN

Stack Overflow用户

发布于 2014-01-15 09:24:29

可以使用Object.keys(array)查询字符串化的键。

票数 87
EN

Stack Overflow用户

发布于 2015-12-01 19:59:19

假设您的数组看起来像arr = [ { a: 1, b: 2, c: 3 }, { a: 4, b: 5, c: 6 }, { a: 7, b: 8, c: 9 } ] (或者可能是其他键),您可以这样做

代码语言:javascript
复制
arr.map((o) => {
    return Object.keys(o)
}).reduce((prev, curr) => {
    return prev.concat(curr)
}).filter((col, i, array) => {
    return array.indexOf(col) === i
});

["a", "b", "c"]

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2509432

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档