如何迭代这个javascript对象?

如何迭代这个javascript对象?,javascript,Javascript,我有一个像下面这样的物体- var objResult = {0:{name:"xyz"}, 1:{name:"pqr"}, 2:{name:"abc"}}; 我得到个人价值观,比如 console.log(objResult[0].name); // xyz console.log(objResult[1].name); // pqr 所以当我迭代时,我认为使用for循环就可以了,但是objResult.length给出了未定义的值 for(var i =0;i< objResult

我有一个像下面这样的物体-

var objResult = {0:{name:"xyz"}, 1:{name:"pqr"}, 2:{name:"abc"}};
我得到个人价值观,比如

console.log(objResult[0].name); // xyz
console.log(objResult[1].name); // pqr
所以当我迭代时,我认为使用for循环就可以了,但是
objResult.length
给出了未定义的值

for(var i =0;i< objResult.length; i++){
console.log(objResult[i]);
}
for(var i=0;i

“for…in”结构允许您迭代对象上存在的所有键,甚至是无主键

语法如下:
'for(此中的const key){}'

在迭代对象属性的语法中使用for

var objResult={0:{name:“xyz”},1:{name:“pqr”},2:{name:“abc”};
for(对象结果中的常量项)

console.log(objResult[item])
不要使用对象,而是使用数组:

var arrResult = [{name:"xyz"}, {name:"pqr"}, {name:"abc"}];
这将有一个
.length
属性,可以使用
for…of
循环进行正常迭代

如果您实际取回了一个对象,最好将其转换为数组:

var objResult = {0:{name:"xyz"}, 1:{name:"pqr"}, 2:{name:"abc"}};
var arrResult = Object.assign([], objResult);

使用ES5或更高版本时,您可以在一行代码中输入对象值,如下所示:

Object.values(objResult).map(i => console.log(i));
在这里,您首先使用Object.values(objResult)创建一个值数组,然后使用map函数迭代每个元素


如果您不想使用map函数,您可以使用循环(例如“for of”或“for in”)迭代数组。

您可以使用
Object.values
Object.entries
甚至
Object.keys
,具体取决于您对对象本身的需要,然后迭代这些结果(因为它们现在是一个数组)使用
forEach
map

var objResult={0:{name:“xyz”},1:{name:“pqr”},2:{name:“abc”};

Object.values(objResult).forEach(({name})=>console.log(name))根据您的指定,我们可以使用,但需要一些修改

var objResult = {0:{name:"xyz"}, 1:{name:"pqr"}, 2:{name:"abc"}};
for(let key in objResult) {
    let value = objResult[key].name;
    console.log(value);
}

希望,这对您有所帮助

另一种方法是使用
Object.keys()
方法

它返回对象中的键列表,然后您可以迭代该列表以获取值

for(let key in Object.keys(objResult)) {
    console.log(objResult[key]);
}

对象不像数组那样自动具有
length
属性。此外,对象属性是无序的,不能保证所有浏览器都能以相同的顺序获得它们。@在ES 2015中,现代浏览器在一定程度上保证了Kaddath属性的排序@connexo完全同意,但你不能保证人们会使用现代浏览器(除非你特别同意)