迭代javascript对象 - 第二部分

时间:2016-11-30 10:22:30

标签: javascript

你好,谢谢你们。 更新了kopy.io上的链接。

var gems = [...,

    {
      id: 3,
      name: 'Level-3',
      row: {
        r1: '*-*-*',
        r2: '**-**',
        r3: '*-*-*'
        },
      canPushtoDb: true,
      hideLevel: true,
      status: 1
      //canvas
    }    

  ];

现在我试图迭代这样的对象:

    var text;
    var arr;
    var arr2 = gems[0].row;


for( arr in arr2){
    text += '<br />' + arr2[arr] + '<br />';
}

但是完全没有工作:

enter image description here

//* If i will do a kind of graphic map:
// var something = * * * * *  <--- row1
//                 * * * * *  <--- row2
//                 * * * * *  <--- row3
// somthing = [x][y]

所以我要保持gems[]数组,易于编辑/更改/修改。 多数民众赞成在这个问题,因为在其他方面,我必须实施一个 每个级别的功能。 我需要一种方法来迭代&#39; row&#39;会员在检查后发现了&#39; id&#39;或者&#39; name&#39; 关键价值。

我很困惑,因为我可以在每个成员上单独访问,例如:gems[2].name ---> Level-3gems[1].row.r2 ---> -***-。但事实并非如此 我想要的是。我在检查了一些&#39;值&#39;之后搜索了一个循环。 迭代行#&#39; row&#39;会员。例如:if level == id然后循环 gems[i].row。但我无法找到方法。

&#13;
&#13;
var gems = [{
    id: 1,
    name: 'Level-1',
    row: {
      r1: '*****',
      r2: '-***-',
      r3: '--*--'
    },
    canPushtoDb: true,
    hideLevel: false,
    status: 1
      //canvas
  }, {
    id: 2,
    name: 'Level-2',
    row: {
      r1: '**-**',
      r2: '-*-*-',
      r3: '-***-',
    },
    canPushtoDb: true,
    hideLevel: false,
    status: 1
      //canvas
  }, {
    id: 3,
    name: 'Level-3',
    row: {
      r1: '*-*-*',
      r2: '**-**',
      r3: '*-*-*'
    },
    canPushtoDb: true,
    hideLevel: true,
    status: 1
      //canvas
  }

];


var text;
var arr;
var arr2 = gems[0].row;


for (arr in arr2) {
  text += '<br />' + arr2[arr] + '<br />';
}
document.write(text);
&#13;
&#13;
&#13;

2 个答案:

答案 0 :(得分:1)

为什么不将row属性设置为一个易于迭代的数组,至少比具有属性的对象更好?

row: ['*-*-*', '**-**', '*-*-*'],

如果您想保留对象,可以迭代按键

['r1', 'r2', 'r3'].forEach(function (k) {
    console.log(gems[1].row[k]) //do something 
});

答案 1 :(得分:1)

您的gems[0].row会返回一个对象,而不是一个数组。

因此你想要的是循环一个对象。像

var arr2 = gems[0].row;

for (var key in arr2 ) {
  text += '<br />' + arr2[key] + '<br />';
}