簡體   English   中英

從javascript嵌套數組中獲取值

[英]Get value from javascript nested array

我是 JavaScript 編碼新手。 到目前為止,我知道如何從多數組中設置和獲取值,但是使用這個我找不到正確的方法來做到這一點。

我正在嘗試從此數組中獲取電子郵件值:

__arr.push(['id' ,'12541']);
__arr.push(['tag', {"sub":false,"email":"email@email.com"}]);

我試過

JSON.parse(__ar.tag.email)
document.write(__ar[2][2])

到目前為止,我嘗試過的所有內容都得到了undefinedtag[object, object]

獲得它的最簡單方法是什么?

email屬性位於數組的第二個元素(即基於零的索引數組的索引 1)。 因此,要訪問它,您還需要訪問元素的第二個對象(再次索引 1),然后.email就在您的手中:

document.write(__arr[1][1].email);

所以你有一個 __arr 數組,你推送的第一個元素是 id,這是一個數組,第二個數組有你的電子郵件 ID。

所以你可以訪問如下所示。

我希望這能解決你的問題

 var __arr = []; __arr.push(['id' ,'12541']); __arr.push(['tag', {"sub":false,"email":"email@email.com"}]); console.log("email id =>", __arr[1][1].email)

假設您只推送這兩個值,您的數組如下所示:

[
  ['id' ,'12541'],
  ['tag', {"sub":false,"email":"email@email.com"}]
]

意味着,當您使用__arr.tag.email訪問它時將導致未定義錯誤,因為它是一個數組而不是一個對象。

因此,如果您不確切知道索引,您可以做的是:

var __arr = [];
__arr.push(['id' ,'12541']);
__arr.push(['tag', {"sub":false,"email":"email@email.com"}]);

for (var i = 0; i < __arr.length; i++){
 if(__arr[i][0] === 'tag'){
   console.log(__arr[i][1].email);
   break;
 }
}

一種動態的方法(具有 2 個嵌套級別)。

基本上,我使用了兩個嵌套循環並將電子郵件聚合到一個列表中。

 let __arr = [] __arr.push(['id' ,'12541']); __arr.push(['tag', {"sub":false,"email":"email@email.com"}]); __arr.push(['tag2', {"sub":false,"email":"2222@email.com"}]); const emails = __arr.reduce((res, items) => { items.forEach(elem => { if (elem.email) res.push(elem.email) }) return res },[]) console.log(emails) // [ 'email@email.com', '2222@email.com' ]

我希望你知道數組是從它的索引開始的,它的基值為 0。在你的代碼中,沒有這樣的元素在索引 2 中可用。

document.write(__ar[2][2]) // 

我知道這里給出了很多答案,但我只想告訴你,即使你在“__arr”中推送值,即數組數組。 所以每個元素都存儲在它的索引值中。

var __arr = [];
__arr.push(['id' ,'12541']);
__arr.push(['tag', {"sub":false,"email":"email@email.com"}]);

console.log(__arr[0]) //return you ["id", "12541"]
console.log(__arr[1]) //return you ["tag", {sub: false, email: "email@email.com"}]

again you can see inside of your "__arr" there is a an array element
console.log(__arr[0][0]) //return you "id"
console.log(__arr[0][1]) //return you "12541"

console.log(__arr[1][0]) //return you "tag"
console.log(__arr[1][1]) //return you {sub: false, email: "email@email.com"}

and here what you want i.e.
console.log(__arr[1][1].sub) //return you false
console.log(__arr[1][1].email) //return you "email@email.com"

暫無
暫無

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

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