为什么我的for- for-each循环不遍历我的JavaScript关联数组对象?

// Defining an array
var array = [];

// Assigning values to corresponding keys
array["Main"] = "Main page";
array["Guide"] = "Guide page";
array["Articles"] = "Articles page";
array["Forum"] = "Forum board";

// Expected: loop over every item,
// yet it logs only "last" assigned value - "Forum"
for (var i = 0; i < array.length; i++) {
    console.log(array[i]);
}

jQuery each()可能有帮助:https://api.jquery.com/jQuery.each/


当前回答

如果Node.js或浏览器支持Object.entries(),它可以用作Object.keys()的替代方案(Pointy的答案)。

Const h = { 答:1, b: 2 }; Object.entries (h)。forEach(([key, value]) => console.log(value)); // log 1, 2

在这个例子中,forEach使用数组的解构赋值。

其他回答

这是一个非常简单的方法。好处是你也可以得到钥匙:

for (var key in array) {
    var value = array[key];
    console.log(key, value);
}

For ES6:

array.forEach(value => {
  console.log(value)
})

对于ES6(如果你想要值,索引和数组本身):

array.forEach((value, index, self) => {
  console.log(value, index, self)
})

如果Node.js或浏览器支持Object.entries(),它可以用作Object.keys()的替代方案(Pointy的答案)。

Const h = { 答:1, b: 2 }; Object.entries (h)。forEach(([key, value]) => console.log(value)); // log 1, 2

在这个例子中,forEach使用数组的解构赋值。

arr_jq_TabContents[key]将数组视为0索引形式。

似乎几乎每一个答案都不是一开始问的。

foreach-loop似乎不起作用。简单的for循环也不能很好地工作,因为length属性在关联数组的情况下将为零(这是一种退步)。而for-in则用于关联数组

//定义数组 Var数组= []; //为相应的键赋值 array["Main"] = "主页"; array["Guide"] = "指南页"; array["Articles"] = "Articles page"; array["论坛"]= "论坛板"; //期望:遍历每一项, //但它只记录“最后”分配的值-“论坛” 对于(var index in array) { console.log(索引数组(指数)); }

下面是一个使用关联数组作为泛型对象类型的简单方法:

Object.prototype.forEach =函数(cb){ if(this instanceof Array)返回this. foreach (cb); Let self = this; Object.getOwnPropertyNames(这).forEach ( (k) = > {cb。调用(self, self[k], k);} ); }; 对象({1,b: 2, c: 3})。forEach((值,键)= > { Console.log('键/值对:${键}/${值}'); });