为什么我的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/


当前回答

Var obj = { No: [" No ", 32], Nt: ["no", 32], Nf: ["no", 32,90] }; 计数= -1;//必须是静态值 对于(i in obj) { 数+ +; if (obj.hasOwnProperty(i)) { console.log (obj[我][数]) }; };

在这段代码中,我使用括号方法来调用数组中的值,因为它包含数组。但是,简单地说,一个变量i有一个属性键和一个循环,称为关联数组的两个值。

这是一个完美的方法。

其他回答

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

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

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

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

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

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)
})

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

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('键/值对:${键}/${值}'); });

你可以这样做:

var array = [];

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


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