对象浏览和“数组”属性

时间:2016-06-13 08:22:05

标签: javascript arrays object

今天我的一个应用程序出了问题。使用Ajax,我得到一个完全填充所需值的对象(使用console.log进行检查)。在此对象中,每个属性都是一个包含多个数字的数组。

在我的应用程序中,我正在尝试浏览此对象以获取每个数组并使用它执行一些操作。这里的问题是我无法取回阵列。事实上,当使用for(var p in myObject)时,它只获取属性的名称,而不是与其链接的值。

这是一个非常小的jsFiddle,用来揭露我想做的事情:https://jsfiddle.net/rxj10cyk/ 使用此代码时,控制台记录了大量字符串值但没有数组。

我认为这有一个与for..in循环的链接,我想在属性名称上循环,但我怎样才能获得我想要的东西?

3 个答案:

答案 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]);
}

JSFIDDLE

答案 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;
&#13;
&#13;

答案 2 :(得分:0)

  

for ... in语句以任意顺序迭代对象的可枚举属性。

&#13;
&#13;
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;
&#13;
&#13;

如果您使用的是ES6,则可以尝试for...of

注意:由于某些原因,我无法在Object上使用它,但要循环Array它可以正常工作。

以下是一个示例:

&#13;
&#13;
var myObject = {
  first: [0, 13, 41, 9],
  second: [33, 6],
  third: [1, 1, 23]
}

for (val of myObject.first) {
  console.log(val);
}
&#13;
&#13;
&#13;