У меня следующая структура JSON:
[{ "id":"10", "class": "child-of-9" }, { "id": "11", "classd": "child-of-10" }]
Как мне перебрать его с помощью JavaScript?
У меня следующая структура JSON:
[{ "id":"10", "class": "child-of-9" }, { "id": "11", "classd": "child-of-10" }]
Как мне перебрать его с помощью JavaScript?
Взято из документации jQuery:
var arr = [ "one", "two", "three", "four", "five" ];
var obj = { one:1, two:2, three:3, four:4, five:5 };
jQuery.each(arr, function() {
$("#" + this).text("My id is " + this + ".");
return (this != "four"); // will stop running to skip "five"
});
jQuery.each(obj, function(i, val) {
$("#" + i).append(document.createTextNode(" - " + val));
});
var arr = [ {"id":"10", "class": "child-of-9"}, {"id":"11", "class": "child-of-10"}];
for (var i = 0; i < arr.length; i++){
document.write("<br><br>array index: " + i);
var obj = arr[i];
for (var key in obj){
var value = obj[key];
document.write("<br> - " + key + ": " + value);
}
}
Примечание: метод for-in отлично подходит для простых объектов. Не очень умно использовать с объектом DOM.
for key in obj цикла, что obj.hasOwnProperty(key) --- иначе однажды вы можете найти другие ключи, пробивающиеся в obj, которые вам не нужны, если, например, кто-то расширит прототип ...
- person Funka; 17.01.2014
Используйте для ... из:
var mycars = [{name:'Susita'}, {name:'BMW'}];
for (var car of mycars)
{
document.write(car.name + "<br />");
}
Результат:
Susita
BMW
i - это имя свойства.
- person JLRishe; 20.01.2015
mycars[i].name. Насколько я понял, первоначальный вопрос заключается в том, что к имени свойства (в данном случае name) следует обращаться через переменную.
- person SsJVasto; 07.04.2017
Uncaught ReferenceError: i is not defined
- person behelit; 17.05.2017
for..in, а не foreach. Насколько мне известно, Foreach не существует для объектов JSON.
- person mneumann; 30.01.2020
Пожалуйста, дайте мне знать, если это будет непросто:
var jsonObject = {
name: 'Amit Kumar',
Age: '27'
};
for (var prop in jsonObject) {
alert("Key:" + prop);
alert("Value:" + jsonObject[prop]);
}
Если это ваш dataArray:
var dataArray = [{"id":28,"class":"Sweden"}, {"id":56,"class":"USA"}, {"id":89,"class":"England"}];
тогда:
$(jQuery.parseJSON(JSON.stringify(dataArray))).each(function() {
var ID = this.id;
var CLASS = this.class;
});
Скопировано и вставлено с http://www.w3schools.com, поэтому накладные расходы JQuery не требуются.
var person = {fname:"John", lname:"Doe", age:25};
var text = "";
var x;
for (x in person) {
text += person[x];
}
РЕЗУЛЬТАТ: Джон Доу 25
Пример mootools:
var ret = JSON.decode(jsonstr);
ret.each(function(item){
alert(item.id+'_'+item.classd);
});
С вложенными объектами его можно получить как рекурсивную функцию:
function inside(events)
{
for (i in events) {
if (typeof events[i] === 'object')
inside(events[i]);
else
alert(events[i]);
}
}
inside(events);
где as events - это объект json.
Вы можете использовать мини-библиотеку, например objx - http://objx.googlecode.com/
Вы можете написать такой код:
var data = [ {"id":"10", "class": "child-of-9"},
{"id":"11", "class": "child-of-10"}];
// alert all IDs
objx(data).each(function(item) { alert(item.id) });
// get all IDs into a new array
var ids = objx(data).collect("id").obj();
// group by class
var grouped = objx(data).group(function(item){ return item.class; }).obj()
Доступны и другие «плагины», позволяющие обрабатывать подобные данные, см. http://code.google.com/p/objx-plugins/wiki/PluginLibrary
Маркиз Ван может быть лучшим ответом при использовании jQuery.
Вот нечто очень похожее на чистый JavaScript, использующий метод JavaScript forEach. forEach выполняет функцию аргумент. Затем эта функция будет вызываться для каждого элемента в массиве с указанным элементом в качестве аргумента.
Коротко и легко:
var results = [ {"id":"10", "class": "child-of-9"}, {"id":"11", "classd": "child-of-10"} ];
results.forEach(function(item) {
console.log(item);
});
это чисто комментированный пример JavaScript.
<script language="JavaScript" type="text/javascript">
function iterate_json(){
// Create our XMLHttpRequest object
var hr = new XMLHttpRequest();
// Create some variables we need to send to our PHP file
hr.open("GET", "json-note.php", true);//this is your php file containing json
hr.setRequestHeader("Content-type", "application/json", true);
// Access the onreadystatechange event for the XMLHttpRequest object
hr.onreadystatechange = function() {
if(hr.readyState == 4 && hr.status == 200) {
var data = JSON.parse(hr.responseText);
var results = document.getElementById("myDiv");//myDiv is the div id
for (var obj in data){
results.innerHTML += data[obj].id+ "is"+data[obj].class + "<br/>";
}
}
}
hr.send(null);
}
</script>
<script language="JavaScript" type="text/javascript">iterate_json();</script>// call function here
Еще одно решение для навигации по документам JSON - JSONiq (реализовано в Zorba), где можно написать что-то вроде:
jsoniq version "1.0";
let $doc := [
{"id":"10", "class": "child-of-9"},
{"id":"11", "class": "child-of-10"}
]
for $entry in members($doc) (: binds $entry to each object in turn :)
return $entry.class (: gets the value associated with "class" :)
Вы можете запустить его на http://try.zorba.io/