在 Javascript / jQuery 中获取对象的长度
Getting Length of Object in Javascript / jQuery
我正在尝试在jQuery中设置一个数组,然后我需要对其执行一个for循环。但是由于某种原因,我似乎无法使用关联数组?
var items = new Array();
items['foo'] = 123456;
items['bar'] = 789012;
items['baz'] = 345678;
items['bat'] = 901234;
alert(items.length);
这只是一个测试,但它返回 0?
你不能在
JavaScript 中按照你想要的方式associative array
,而是可以使用 Object。
例如:
var items = {
foo : 123456,
bar : 789012,
baz : 345678,
bat : 901234
}
要计算长度,您可以执行以下操作:
var getObjectSize = function(obj) {
var len = 0, key;
for (key in obj) {
if (obj.hasOwnProperty(key)) len++;
}
return len;
};
用途:getObjectSize(items); // output: 4
欲了解更多信息,请参阅此处。
另一个是:
Object.keys(items).length;
但并非所有浏览器都支持。
var items = new Array();
items['foo'] = 123456;
问题出在第一行。您认为您正在向索引foo
的数组中添加一个项目,但您实际上是在向items
变量添加一个属性,其中包含键foo
和值123456
。如果您要键入items.foo
它会返回您的123456
。
这种方法的问题在于,向数组添加属性不会神奇地增加数组的长度。
如果要使用非数字索引,则需要使用对象而不是数组:
var items = {
foo: 123456,
bar: 789012,
baz: 345678,
bat: 901234
};
另一种方法可能是设置两个不同的数组,并行构造:
var items = [], items2 = [];
items.push('foo');
items2.push(123456);
// etc.
alert(items2.length);
此方法的效率取决于您如何使用它。如果您只打算循环浏览项目列表并对每个项目执行某些操作,则此方法可能更有效。但是如果你需要像关联数组(items['foo']
)一样使用它,那么你最好构建一个对象。
.length 属性返回数组的最高数字索引。因此,在您的情况下,没有数字索引,它返回 0。尝试
items[98] = "something";
项目长度将是 98..!请谨慎使用 .length 属性,如果您还想计算非数字标记,请遍历 Object(数组也是一个对象)并计算其 ownProperties。
相关文章:
- 在node.js中使用JavaScript从JSON对象获取和设置文本内容
- 如何在JavaScript中基于事件对象获取文件名
- 使用Lodash从JSON对象获取特定于环境的配置
- 从每个父对象获取attr,并为每个子对象设置attr
- 使用javascript从json对象获取父名称
- 从express请求对象获取客户端MAC地址
- 正在从JSON对象获取数组
- 使用生成的键从对象获取数据
- 如何在 C# 中从 JavaScript 对象获取值
- JavaScript |对象:获取属性忍者移动
- 从 CasperJS 中的嵌套 JavaScript 对象获取值
- 从 JSON 对象获取数据时出现问题
- Angularjs 从范围对象获取值
- 以点表示法计算字符串,以从视图中的对象获取相应的值
- 如何测试从promise对象获取数据的控制器
- Javascript-在for循环上从var中的对象获取适当性
- 在javascript中从json对象获取数据
- 如何从每个对象获取jQuery的“title”和“url”值
- 从react routers browserHistory对象获取当前页面路径
- 从Javascript对象获取CSV值