JavaScript: повторять строку JSON - PullRequest
0 голосов
/ 13 февраля 2012

JSON строка:

'["Colour","Audio","Effect"]'

У меня проблема с повторением, хотя это простое решение. Я пробовал:

for (var o in obj) { } // iterates through each individual character of the json object

for (var i = 0; i < obj.length; i++) { } // same as above

$.each(obj, function(i, v) { }); // same as above

Я здесь чего-то не вижу. Так что, надеюсь, кто-то там сможет выяснить, что не так.

Ответы [ 3 ]

4 голосов
/ 13 февраля 2012

Сначала проанализируйте строку JSON:

var jsonStr = '["Colour","Audio","Effect"]';
var obj = JSON.parse(jsonStr);

// Alternatively, write out the JSON directly
// var obj = ["Colour","Audio","Effect"];

Тогда либо

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

или

$.each(obj, function(i, v) { });

for (var o in obj) { } перебирает необработанные свойства массивов, включая length, и не подходит для перебора массива.

1 голос
/ 13 февраля 2012

Вам нужно проанализировать строку JSON, прежде чем вы сможете ее использовать.

["Colour","Audio","Effect"] - это массив, '["Colour","Audio","Effect"]' - это строка.

Вам нужно использовать JSON.parse('["Colour","Audio","Effect"]') (или $.parseJSON) для преобразования строки JSON в пригодный для использования массив JavaScript.

var obj = '["Colour","Audio","Effect"]';
$.each(obj, function(i, v) {
   console.log(v); // prints each letter
});

var obj = ["Colour","Audio","Effect"]; // or $.parseJSON('["Colour","Audio","Effect"]')
$.each(obj, function(i, v) {
   console.log(v); // prints each element
});
1 голос
/ 13 февраля 2012

вам просто нужно объявить переменную obj:

var obj = ["Colour","Audio","Effect"];

for (var i = 0; i < obj.length; i++) { 
    alert(obj[i]);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...