首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >遍历javascript对象.第2部分

遍历javascript对象.第2部分
EN

Stack Overflow用户
提问于 2016-11-30 10:22:29
回答 2查看 63关注 0票数 1

大家好,谢谢大家。更新了kopy.io上的链接。

代码语言:javascript
复制
var gems = [...,

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

  ];

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

代码语言:javascript
复制
    var text;
    var arr;
    var arr2 = gems[0].row;


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

但并没有完全发挥作用:

代码语言:javascript
复制
//* If i will do a kind of graphic map:
// var something = * * * * *  <--- row1
//                 * * * * *  <--- row2
//                 * * * * *  <--- row3
// somthing = [x][y]

所以我把东西保存在gems[]数组上,很容易编辑/更改/修改。这确实是个问题,因为在其他方面,我必须在每个级别上实现某种函数。在检查'id‘或'name’键值后,我需要一种方法来遍历'row‘成员。

我很困惑,因为我可以单独访问每个成员,比如:gems[2].name ---> Level-3gems[1].row.r2 ---> -***-。但这不是我想要的。在检查某个“值”、迭代“行”成员之后,我搜索一个循环。例如: if level == id然后在gems[i].row上循环。但我找不到路。

代码语言:javascript
复制
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);

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-11-30 10:26:55

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

代码语言:javascript
复制
row: ['*-*-*', '**-**', '*-*-*'],

如果您希望保留该对象,则可以迭代这些键。

代码语言:javascript
复制
['r1', 'r2', 'r3'].forEach(function (k) {
    console.log(gems[1].row[k]) //do something 
});
票数 1
EN

Stack Overflow用户

发布于 2016-11-30 10:30:27

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

因此,您想要的是遍历一个对象。喜欢

代码语言:javascript
复制
var arr2 = gems[0].row;

for (var key in arr2 ) {
  text += '<br />' + arr2[key] + '<br />';
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40885822

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档