在JavaScript中循环对象

时间:2016-11-28 15:19:28

标签: javascript

我必须这样做:对字符串进行处理我会问一些用户:

text = "";
arr = ["*****"];
arr2 = [];

text = arr.toString();
for(i=0; i<text.length; i++) {
  arr2.push(text[i]);
}
  ---> arr2 = [*,*,*,*,*] <--- thats what i want!.

但是我必须使用这样的大量数据,所以我创建了数组来构建结构化数据的内容:

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

  ];

我想在gems内循环以在某种数组上转换该字符串,就像我在这个问题的开头写的那样。 我正在寻找一个Angular示例,它使用controller包装这些对象。

但就目前而言,我已经将我的代码放在他自己的一些重构版本上了。我只需要一些硬编码的函数或方法,如gems.name[0].row.r1(这对我不起作用!)来获取我正在处理的所有对象。

2 个答案:

答案 0 :(得分:2)

你可以对gems进行迭代:

for(var i = 0; i < gems.length; i++) {
 ...
}

然后你可以循环遍历这个对象(在你上面的for循环中)

$.each(var obj in row) {
 ...Do something with each object found in row
}

要访问硬编码对象,您的问题是gems.name[0].row.r1

应该是gems[0].row.r1

答案 1 :(得分:1)

正如@Patrick Evans所指出的,除了arr2应该是arr2 = gems[0].row.r1之外,你的代码是正确的。看看这个JSFiddle