簡體   English   中英

遍歷多維數組

[英]Loop through multidimensional array

我如何遍歷下面的多維數組?

我正在創建這樣的數組:

var _cQueue = [[]];

並添加以下內容:

var valueToPush = new Array();
valueToPush['unique_email@gmail.com'] = '1234567';
_cQueue.push(valueToPush);

我想遍歷添加的所有不同電子郵件地址,然后遍歷與該電子郵件相關聯的每個隨機字符串

有任何想法嗎?

首先,您不應按鍵將元素添加到數組,而應按對象添加元素。 這意味着您的全局對象應構建為:

var _cQueue = [];
var valueToPush = {}; // this isn't an array but a js object used as map
valueToPush['unique_email@gmail.com'] = '1234567';
_cQueue.push(valueToPush);

然后,您使用兩種循環進行迭代:

for (var i=0; i<_cQueue.length; i++) { // iterate on the array
   var obj = _cQueue[i];
   for (var key in obj) { // iterate on object properties
      var value = obj[key];
      console.log(value);
   }
}

請參見MDN出色的“使用對象”


如果要查找與ID關聯的電子郵件,可以執行以下兩項操作:

1)循環直到找到它:

function find(id) {
    for (var i=0; i<_cQueue.length; i++) { // iterate on the array
       var obj = _cQueue[i];
       for (var key in obj) { // iterate on object properties
          var value = obj[key];
          if (value==id) return key;
       }
    }
}

2)將所有ID放在地圖中,以便更快找到它:

   var bigMap = {};
   for (var i=0; i<_cQueue.length; i++) { // iterate on the array
       var obj = _cQueue[i];
       for (var key in obj) { // iterate on object properties
          bigMap[obj[key]] = key; // maps the id to the email
       }
    }
    function find(id) {
        return bigMap[id];
    }

在兩個級別上使用for-in:

for(var val in _cQueue){
var obj = _cQueue[val];
   for(var val1 in obj){
    alert('key(email):' + val1 + '\nValue:' + obj[val1]);
   }
}

暫無
暫無

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

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