2016-11-28 4 views
0

я должен сделать это: работать над строку, я попрошу некоторых пользователей:Петля над объектом в 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, чтобы преобразовать эту строку в какой-то массив, так же, как я писал в начале этого вопроса. Я смотрел на угловой пример, который обертывает эти объекты controller.

Но пока я далеко, чтобы получить мой код на какой-то отредактированной его версии. Мне просто нужна некоторая жестко запрограммированная функция или метод вроде gems.name[0].row.r1 (это не работает для меня!), Чтобы получить объект, над которым я работаю.

+3

это будет 'gems [0] .row.r1' not' gems.name [0] .row.r1' –

+0

Вы должны получить к ним доступ как 'gems [0] .row.r1'. Чтобы создать массив из символов строки: 'var arr = str.split ('')'; –

+1

Вы можете решить свои первые части, используя 'array.fill'. 'var arr2 = new Array (tet.length) .fill ('*')' – Rajesh

ответ

2

Вы можете итератор драгоценных камней, как например:

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

Вы можете затем цикл через объект как таковые (в пределах ваши для петли выше)

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

Чтобы получить доступ жёстко прописанный объекта, ваш вопрос gems.name[0].row.r1

Когда это должно быть просто gems[0].row.r1

+0

Я пытаюсь перебирать строки с чем-то вроде этого: 'for (i = 0: i <= gems [2] .row.length; i ++) { arr =" r1: "+ r1 +" r2 : "+ r2 +" r3: "+ r3; } 'Но это не работает. – Hell0

+1

Вы должны определить 'r1, r2, r3.' Вы можете сделать это через' var r1 = gems [2] .row.r1' .. и т. Д. Для всех из них. – jdmdevdotnet

+0

Спасибо за ответ. Я делаю это так: 'for (arr in arr2) { текст + = '
' + arr2 [arr] + '
'; } '. Какие проблемы возникают. во-первых, на выходе отображается слово 'undefined', как если бы оно было членом на' object'. И во-вторых, редактор нагревает меня, чтобы вырвать предложение внутри 'for' с помощью оператора' if'. Я не могу обойти оба. Я определил переменные как: 'var text; var arr; var arr2 = gems [0] .row; ' – Hell0

1

Как отметил @Patrick Evans, ваш код правильный, за исключением того факта, что arr2 должен быть arr2 = gems[0].row.r1. Посмотрите на это JSFiddle.

+1

Я думаю, это то же самое, на что указал @Patrick Эванс в разделе комментариев – Rajesh