У меня следующая структура 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/