首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Javascript / jQuery中获取对象的长度

在Javascript / jQuery中获取对象的长度
EN

Stack Overflow用户
提问于 2012-08-08 01:45:00
回答 4查看 13.9K关注 0票数 3

我正尝试在jQuery中设置一个数组,然后需要对其执行一个for循环。但是由于某种原因,我似乎不能使用关联数组?

代码语言:javascript
复制
var items = new Array();
items['foo'] = 123456;
items['bar'] = 789012;
items['baz'] = 345678;
items['bat'] = 901234;
alert(items.length);

这只是一个测试,但它返回0?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-08-08 01:45:58

你不能让JavaScript中的associative array像你想要的那样,相反,你可以使用。

例如:

代码语言:javascript
复制
var items = {
  foo : 123456,
  bar : 789012,
  baz : 345678,
  bat : 901234
}

为了计算长度,你可以这样做:

代码语言:javascript
复制
var getObjectSize = function(obj) {
    var len = 0, key;
    for (key in obj) {
        if (obj.hasOwnProperty(key)) len++;
    }
    return len;
};

用法:getObjectSize(items); // output: 4

有关更多信息,请参阅here

另一个是:

代码语言:javascript
复制
Object.keys(items).length;

但并不是所有的浏览器都支持。

票数 11
EN

Stack Overflow用户

发布于 2012-08-08 01:52:49

代码语言:javascript
复制
var items = new Array();
items['foo'] = 123456;

问题出在第一行。您认为您正在向索引foo处的数组添加一个项,但实际上您正在向items变量添加一个具有键foo和值123456的属性。如果你输入items.foo,它会返回你的123456

这种方法的问题是,向数组添加属性并不能神奇地增加数组的长度。

如果您希望使用非数字索引,则需要使用对象而不是数组:

代码语言:javascript
复制
var items = {
    foo: 123456,
    bar: 789012,
    baz: 345678,
    bat: 901234
};
票数 2
EN

Stack Overflow用户

发布于 2012-08-08 01:55:10

另一种方法可能是设置两个不同的数组,它们是并行构造的:

代码语言:javascript
复制
var items = [], items2 = [];
items.push('foo');
items2.push(123456);
// etc.
alert(items2.length);​

这种方法的效率取决于您将如何使用它。如果您只打算循环遍历项目列表并对每个项目执行某些操作,这种方法可能会更有效。但是,如果您需要像使用关联数组(items['foo'])一样使用它,那么您最好构建一个对象。

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

https://stackoverflow.com/questions/11851306

复制
相关文章

相似问题

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