如何确定数组中定义元素的数量?

问题描述 投票:0回答:3
如果我在javaScript中有一个数组,该数组偶尔填充,我该如何确定数组中的非整个元素的数量?

例如:

var zipCodes = []; zipCodes[10006] = 'New York, NY'; zipCodes[90210] = 'Los Angeles, CA';

zipcodes.length在这里返回90,211,我真的不想循环穿过90,209的nothings来找出我有两个有效的元素。使用for-In循环意味着处理任何可能冒出原型链的东西,并试图弄清楚它是否是this
阵列的一部分。

有任何方法,给定上述数组,我可以将“ 2”作为定义元素的数量提取?

您需要一个具有键值对的对象(有点像一个关联数组 / hashtable),而不是数组:

javascript optimization
3个回答
12
投票

Edit: 或者,您可以将对象存储在这样的数组中:

var zipCodes = [];
zipCodes.push({10006:'New York, NY'});
zipCodes.push({90210: 'Los Angeles, CA'});

// zipcodes.length =2


您也可以(取决于各种当前未知数)填充了第一个数组中填充条目的索引(索引?)的第二个数组。

因此,您可以使用一次缩放整个数组的方法,填充第二个数组:


0
投票

或您可以在zipcodes数组上使用并删除添加访问器方法,以更新索引数组,如果您期望经常更改索引。

或您可以在数组上使用JavaScript Sort()方法,然后遍历它,直到击中空单元格为止。您也可以使用它来优化以前的技术(这种内置方法的效率上的YMMV,但是FFX 3.1中的新JavaScript引擎和Chrome肯定会做得很好,我敢肯定。)

,您可以用
forEach

迭代一个稀疏的阵列:


0
投票

const zipCodes = [];
zipCodes[10006] = 'New York, NY';
zipCodes[90210] = 'Los Angeles, CA';

zipCodes.forEach((city, zipCode) => console.log(zipCode, city));


最新问题
© www.soinside.com 2019 - 2025. All rights reserved.