我怎样才能遍历下面的多维数组?
我正在创建这样的数组:
var _cQueue = [[]];
并添加这样的项目:
var valueToPush = new Array();
valueToPush['unique_email@gmail.com'] = '1234567';
_cQueue.push(valueToPush);
我想遍历添加的所有不同的电子邮件地址,然后是与该电子邮件关联的每个随机字符串
有任何想法吗?
我怎样才能遍历下面的多维数组?
我正在创建这样的数组:
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]);
}
}