javascript array.length不返回元素数

时间:2014-07-23 10:34:13

标签: javascript arrays

我有以下代码:var a = rfc();

rfc()返回以下格式{usd:1,gbp:0.59,bdt:77.5}预期的数组。我需要数数。我没有使用a.length做到这一点。它总是返回0.我使用下面的函数检查了a的内容,返回如下:

检查数组内容的函数:

Object.keys(coordinates).forEach(function(key) {
    console.log(key, coordinates[key]);
});

控制台输出:

usd 1
bdt 77.5
gbp 0.59
undefined

为什么我无法使用array.length获取数组长度?如何以最少的代码数量计算此数组的元素数?

由于

2 个答案:

答案 0 :(得分:1)

尝试:

Object.keys(coordinates).length

原始对象是一个对象,而不是一个数组。但是,在提取对象的键的数组时(就像在Object.keys(coordinates)中那样),你有一个数组,你可以采用它的长度。

> a = {usd:1,gbp:0.59,bdt:77.5};
[object Object] {
 bdt: 77.5,
 gbp: 0.59,
 usd: 1
}

> Object.keys(a)
["usd", "gbp", "bdt"]

> Object.keys(a).length
3

答案 1 :(得分:1)

您的JavaScript:

{usd:1,gbp:0.59,bdt:77.5}

表示对象,而不是数组。所以它没有长度属性。要快速计算对象中的属性数,可以执行以下操作:

var a = {usd:1,gbp:0.59,bdt:77.5}
var b = Object.keys(a).length 

b现在将设置为3。