小心FOR IN遍历数组

来源:互联网 发布:澳洲人工智能专业排名 编辑:程序博客网 时间:2024/06/05 17:40

From stackoverflow 查看原文

var a = []; // Create a new empty array.a[5] = 5;   // Perfectly legal JavaScript that resizes the array.for (var i = 0; i < a.length; i++) {  // Iterate over numeric indexes from 0 to 5, as everyone expects.  console.log(a[i]);}/** * 输出: * undefined (5次) * 5 */
var a = [];a[5] = 5;for (var x in a) {  // Shows only the explicitly set index of "5", and ignores 0-4  console.log(x);}/** * 输出: * 5 */
// Somewhere deep in your JavaScript library...Array.prototype.foo = 1;// Now you have no idea what the below code will do.var a = [1, 2, 3, 4, 5];for (var x in a){  // Now foo is a part of EVERY array and   // will show up here as a value of 'x'.  console.log(x);}/** * 输出: * 0 * 1 * 2 * 3 * 4 * foo */

加一个 hasOwnProperty (它可是JavaScript中唯一一个处理属性而不查找原型链的函数) 过滤一下还是可以:

if (a.hasOwnProperty(x)){  console.log(x);}
0 0
原创粉丝点击