今天我的一个应用程序出了问题。使用Ajax,我得到一个完全填充所需值的对象(使用console.log
进行检查)。在此对象中,每个属性都是一个包含多个数字的数组。
在我的应用程序中,我正在尝试浏览此对象以获取每个数组并使用它执行一些操作。这里的问题是我无法取回阵列。事实上,当使用for(var p in myObject)
时,它只获取属性的名称,而不是与其链接的值。
这是一个非常小的jsFiddle,用来揭露我想做的事情:https://jsfiddle.net/rxj10cyk/ 使用此代码时,控制台记录了大量字符串值但没有数组。
我认为这有一个与for..in循环的链接,我想在属性名称上循环,但我怎样才能获得我想要的东西?
答案 0 :(得分:1)
要获取您需要使用的密钥值,例如myObject[data]
另请注意对象
中的:
而不是=
var myObject = {
first : [0,13,41,9],
second : [33,6],
third : [1,1,23]
}
for(var data in myObject){
console.log("data is "+data+" value is " +myObject[data]);
}
答案 1 :(得分:0)
for ( var p in myObject )
将获取对象的键;然后,您需要获取myObject[p]
以获取每个密钥的关联值。
var myObject = {
first: [0,13,41,9],
second: [33,6],
third: [1,1,23]
}
for ( var key in myObject )
{
var value = myObject[key];
console.log( key );
console.log( value );
}

或者您可以使用Object.keys()
获取密钥数组:
var myObject = {
first: [0,13,41,9],
second: [33,6],
third: [1,1,23]
}
var keys = Object.keys( myObject );
for ( var i = 0; i < keys.length; ++i )
{
var value = myObject[keys[i]];
console.log( keys[i] );
console.log( value );
}
&#13;
答案 2 :(得分:0)
for ... in语句以任意顺序迭代对象的可枚举属性。
var myObject = {
first: [0, 13, 41, 9],
second: [33, 6],
third: [1, 1, 23]
}
for (var key in myObject) {
console.log(key, myObject[key]);
}
&#13;
如果您使用的是ES6,则可以尝试for...of
。
注意:由于某些原因,我无法在Object
上使用它,但要循环Array
它可以正常工作。
以下是一个示例:
var myObject = {
first: [0, 13, 41, 9],
second: [33, 6],
third: [1, 1, 23]
}
for (val of myObject.first) {
console.log(val);
}
&#13;