簡體   English   中英

如何在for循環中構造嵌套對象

[英]How to destructure nested objects in for-loop

var users = [
   { user: "Name1",geo:{lat:'12',long:'13'} },
   { user: "Name2",geo:{lat:'12',long:'13'}, age: 2 },
   { user: "Name2",geo:{lat:'12',long:'13'} },
   { user: "Name3",geo:{lat:'12',long:'13'}, age: 4 }
 ];

上面是對象數組。

這是for-loop我解構並獲得用戶和年齡,但我想要lat和long我也將如何做到這一點? 我希望它通過解構和for-loop就像我用戶和年齡一樣

for (let { user, age = "DEFAULT AGE" } of users) {
  console.log(user, age);
}

你可以用這個:

for (let {user, age = "DEFAULT AGE", geo: {lat, long}} of users) {
  console.log(user, age, lat, long);
}

您已經成功地對user (僅通過對象中的屬性名稱)和age (也使用默認值)進行了解構。

要逐步使用嵌套解構 ,只需將屬性名稱geo放在那里,因為這是您正在迭代的對象的下一個屬性,其中包含您需要的值:

{user, age = "DEFAULT AGE", geo} -這將產生{lat: "12", long: "13"}geo

要直接訪問嵌套屬性,請遵循以下對象結構:

{user, age = "DEFAULT AGE", geo: {}} - 這只會驗證geo確實是一個對象。

然后,列出要在該對象中訪問的屬性:

{user, age = "DEFAULT AGE", geo: {lat, long}} - 這將為lat產生"12" ,為long "13"

你甚至可以更進一步, 重命名這些屬性:

{user, age = "DEFAULT AGE", geo: {lat: latitude, long: longitude}} -這將產生"12"latitude"13"longitude


這些是解構對象的基本情況:

  • name表示“只需將整個值分配給name ”。
  • {}表示“檢查要解構的值是一個對象還是可以轉換為一個,即既不是null也不是undefined ; 不創造變數“。
  • { prop }表示“將prop的值作為變量prop ”。
  • { prop: rename }表示“跟隨prop屬性並將其值作為變量rename1
  • { prop = value }的意思是“得到的值prop作為可變prop ,但分配value如果prop產量undefined2。

對於“重命名”情況,規則以遞歸方式應用: rename就像name一樣,因此可以用{}{ anotherProp }{ anotherProp: anotherRename }{ anotherProp = anotherDefault }{ anotherProp = anotherDefault }

可以通過逗號添加同一對象級別的其他屬性,例如{propA, propB}

對於數組,存在類似的情況: []將驗證要解構的值是可迭代對象; [a, b]{0: a, 1: b}具有相同的含義; 等等


1:請注意,在{ prop: something }的情況下,不會創建變量prop

2:“yield undefined ”意味着obj.prop將等於undefined ,這意味着該屬性存在且文本值undefined或該屬性不存在。

如果您只是想找到給定用戶並為其返回地理位置,則會執行以下操作:

users.find( u => u.user === 'Name1' ).geo;

請記住,在嘗試使用之前,您需要對“查找結果”進行一些檢查。 例如:

const user = users.find( u => u.user === 'Name1' );

if (user && user.hasOwnProperty('geo')) {
    console.log(user.geo);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM