例如:
var zipCodes = [];
zipCodes[10006] = 'New York, NY';
zipCodes[90210] = 'Los Angeles, CA';
zipcodes.length在这里返回90,211,我真的不想循环穿过90,209的nothings来找出我有两个有效的元素。使用for-In循环意味着处理任何可能冒出原型链的东西,并试图弄清楚它是否是this阵列的一部分。
有任何方法,给定上述数组,我可以将“ 2”作为定义元素的数量提取?
您需要一个具有键值对的对象(有点像一个关联数组 / hashtable),而不是数组:
Edit: 或者,您可以将对象存储在这样的数组中:
var zipCodes = [];
zipCodes.push({10006:'New York, NY'});
zipCodes.push({90210: 'Los Angeles, CA'});
// zipcodes.length =2
您也可以(取决于各种当前未知数)填充了第一个数组中填充条目的索引(索引?)的第二个数组。因此,您可以使用一次缩放整个数组的方法,填充第二个数组:
或您可以在zipcodes数组上使用并删除添加访问器方法,以更新索引数组,如果您期望经常更改索引。
或您可以在数组上使用JavaScript Sort()方法,然后遍历它,直到击中空单元格为止。您也可以使用它来优化以前的技术(这种内置方法的效率上的YMMV,但是FFX 3.1中的新JavaScript引擎和Chrome肯定会做得很好,我敢肯定。)
,您可以用
forEach
:
迭代一个稀疏的阵列:
const zipCodes = [];
zipCodes[10006] = 'New York, NY';
zipCodes[90210] = 'Los Angeles, CA';
zipCodes.forEach((city, zipCode) => console.log(zipCode, city));