如何在JavaScript中迭代对象?

如何在JavaScript中迭代对象?,javascript,arrays,Javascript,Arrays,我有这个东西。我想用JavaScript迭代这个对象。这怎么可能 var dictionary = { "data": [ {"id":"0","name":"ABC"}, {"id":"1","name":"DEF"} ], "images": [ {"id":"0","name":"PQR"}, {"id":"1","name":"xyz"} ] }; 使用生成器函数可以迭代深层键值 函数*d

我有这个东西。我想用JavaScript迭代这个对象。这怎么可能

var dictionary = {
    "data": [
        {"id":"0","name":"ABC"},
        {"id":"1","name":"DEF"}
    ],
    "images": [
        {"id":"0","name":"PQR"},
        {"id":"1","name":"xyz"}
    ]
};

使用生成器函数可以迭代深层键值

函数*deepEntries(obj){
for(让Object.entries(obj))的[key,value]{
如果(值的类型!=='object')
收益[关键,价值]
其他的
for(let分录的深度分录(值))
收益率[关键字,…条目]
}
}
常量字典={
“数据”:[
{“id”:“0”,“name”:“ABC”},
{“id”:“1”,“name”:“DEF”}
],
“图像”:[
{“id”:“0”,“名称”:“PQR”},
{“id”:“1”,“名称”:“xyz”}
]
}
for(让词条中的词条(字典)){
const key=entries.slice(0,-1.join('.'))
常量值=条目[entries.length-1]
console.log(键、值)

}
您可以使用下面的代码来完成。首先使用dictionary.data获取数据数组,并将其分配给数据变量。之后,您可以使用普通for循环对其进行迭代。每一行都是数组中的一个行对象

var data = dictionary.data;

for (var i in data)
{
     var id = data[i].id;
     var name = data[i].name;
}
您可以按照类似的方法迭代图像数组

也有这种方式(ECMAScript 5新增):

for(index in dictionary) {
 for(var index in dictionary[]){
    // do something
  }
}
同样的图像处理方法类似于:

var dictionary = {"data":[{"id":"0","name":"ABC"},{"id":"1", "name":"DEF"}], "images": [{"id":"0","name":"PQR"},{"id":"1","name":"xyz"}]};

for (item in dictionary) {
  for (subItem in dictionary[item]) {
     console.log(dictionary[item][subItem].id);
     console.log(dictionary[item][subItem].name);
  }
}

使用点表示法和/或括号表示法访问对象属性并迭代数组:

var d, i;

for (i = 0; i < dictionary.data.length; i++) {
  d = dictionary.data[i];
  alert(d.id + ' ' + d.name);
}
vard,i;
对于(i=0;i

您还可以使用循环迭代数组;但是,添加到
数组.prototype的属性可能会显示出来,并且您可能不一定会以正确的顺序获取数组元素,甚至不一定以任何一致的顺序获取数组元素。

使用for和foreach循环

var dictionary = {
        "data":[{"id":"0","name":"ABC"}, {"id":"1","name":"DEF"}],
        "images": [ {"id":"0","name":"PQR"},"id":"1","name":"xyz"}]
};


for (var key in dictionary) {
    var getKey = dictionary[key];
    getKey.forEach(function(item) {
        console.log(item.name + ' ' + item.id);
    });
}
var dictionary = {
     data: [{ id: "0", name: "ABC" }, { id: "1", name: "DEF" }],
     images: [{ id: "0", name: "PQR" }, { id: "1", name: "xyz" }]
};
dictionary.data.forEach(item => {
     console.log(item.id + " " + item.name);
});

for (var i = 0; i < dictionary.data.length; i++) {
     console.log(dictionary.data[i].id + " " + dictionary.data[i].name);
}
var字典={
数据:[{id:“0”,名称:“ABC”},{id:“1”,名称:“DEF”},
图像:[{id:“0”,名称:“PQR”},{id:“1”,名称:“xyz”}]
};
dictionary.data.forEach(项=>{
console.log(item.id+“”+item.name);
});
对于(var i=0;i
以下是您的所有选项:

1.(ES2015)
var字典={
“数据”:[
{“id”:“0”,“name”:“ABC”},
{“id”:“1”,“name”:“DEF”}
],
“图像”:[
{“id”:“0”,“名称”:“PQR”},
{“id”:“1”,“名称”:“xyz”}
]
};
for(dictionary.data的常量条目){
log(JSON.stringify(条目))

}
在JS中,应该将花括号放在同一行(我通常主张花括号放在同一行,但JavaScript很奇怪:)我有相同的数组结构,但为什么它返回undefinedfor…in不适合数组。@TanyavonDegurechaff尝试删除
字典。数据
,只需迭代
字典
for…in
用于迭代对象属性。对于数组,请改用
For…of
。For…in不适用于数组。-所以对于字典中的..,但是对于(var j=0;jj)工作得很有魅力。谢谢。
var dictionary = {
     data: [{ id: "0", name: "ABC" }, { id: "1", name: "DEF" }],
     images: [{ id: "0", name: "PQR" }, { id: "1", name: "xyz" }]
};
dictionary.data.forEach(item => {
     console.log(item.id + " " + item.name);
});

for (var i = 0; i < dictionary.data.length; i++) {
     console.log(dictionary.data[i].id + " " + dictionary.data[i].name);
}