[英]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.