繁体   English   中英

如何迭代这个javascript对象?

[英]How to iterate over this javascript object?

我有一个像下面的对象 -

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给出值undefined

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

请你能帮忙怎么做

用于迭代对象属性的语法。

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

你可以阅读这个https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...in

不要使用对象,而是使用数组:

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);

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

 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"}}; Object.entries(objResult).forEach(([k,{name}]) => console.log(name)) 

要访问对象包含的密钥数,请运行以下命令:

 var objResult = {0:{name:"xyz"}, 1:{name:"pqr"}, 2:{name:"abc"}}; lgth = Object.keys(objResult).length; console.log(lgth); 

为什么我没有使用map而是在这种情况下使用forEachmap存在以创建现有值的副本并映射/转换它们,这不是我想要的console.log

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

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

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

'for ... in'构造允许您迭代对象上存在的所有键,甚至是无主。

语法是这样的:'for(const key in this){}'

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

Object.values(objResult).map(i => console.log(i));

在这里,您首先使用Object.values(objResult)创建值的数组,然后使用map函数迭代每个元素。

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

根据您的指定,我们可以使用for,但进行一些修改。

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

希望,这对你有所帮助

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM