如果我在Javascript中有一个偶尔填充的数组,我该如何确定数组中非空元素的数量?
例如:
var zipCodes = []; zipCodes[10006] = 'New York, NY'; zipCodes[90210] = 'Los Angeles, CA';
zipCodes.length在这里返回90,211,我真的不想循环通过90,209个nothings来找出我有两个有效元素.使用for-in循环意味着处理任何可能冒泡原型链并试图弄清楚它是否是该数组的一部分.
有没有办法,鉴于上面定义的数组,我可以提取"2"作为已定义元素的数量?
您需要一个具有键值对的对象(类似于关联数组/哈希表)而不是数组:
var zipCodes = {}; zipCodes[10006] = 'New York, NY'; zipCodes[90210] = 'Los Angeles, CA'; for(var zipCode in zipCodes) { if(zipCodes.hasOwnProperty(zipCode)) {//makes sure prototypes aren't taken into account } }
编辑:或者您可以将对象存储在数组中,如下所示:
var zipCodes = []; zipCodes.push({10006:'New York, NY'}); zipCodes.push({90210: 'Los Angeles, CA'});
//zipCodes.length = 2