如何遍历此javascript对象?

时间:2019-06-25 11:37:39

标签: 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给出的值是 undefined

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

你能帮忙怎么做吗

7 个答案:

答案 0 :(得分:4)

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

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

的信息

答案 1 :(得分:2)

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

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

答案 2 :(得分:1)

您可以根据对象本身的需要使用Object.valuesObject.entries甚至Object.keys,然后使用{来遍历这些结果(因为它们现在是一个数组) {1}}或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"}};

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);而是使用mapforEach存在以创建现有值的副本并映射/转换它们,这不是我想要的{ {1}}。

答案 3 :(得分:1)

另一种方法是使用amount = 0 for i in range(1, 101): amount += i 方法。

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

Object.keys()

答案 4 :(得分:0)

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

语法如下: ‘for(此键为{}}

答案 5 :(得分:0)

在使用ES5或更高版本时,您可以在一行代码中map像这样的对象值:

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

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

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

答案 6 :(得分:0)

根据您的指定,我们可以使用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);
}

希望,这对您有帮助