簡體   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