[英]How to loop through multidimensional associative javascript array?
我有'multidimensional associative'javascript数组(实际上是具有属性的对象,因为JS不能有原生关联数组):
var multiArray={ AAA:"one", BBB:"two", CCC:{ 0:"xxx", 1:"yyy", 2:"zzz"} };
我需要从这个数组中获取这样的字符串:
'AAA = 1&BBB = 2&CCC = xxx,yyy,zzz'
我怎么做?
如果我使用两个这样的简单循环:
for(var key in multiArray)
{
for(var subkey in multiArray[key])
{
string = string + multiArray[key][subkey]+",";
}
}
我得到这样的东西:
'AAA = o,n,e&BBB = t,w,o&CCC = xxx,yyy,zzz'
这不是我需要的。
任何只使用Javascript的解决方案?
好的,我在这里创造了一个小提琴: http : //jsfiddle.net/bJ6HH/ 。 它适用于任何深度的嵌套。
我会使用像这样的功能
var multiArray={ AAA:"one", BBB:"two", CCC:{ 0:"xxx", 1:"yyy", 2:"zzz"} };
function objToStr(o,delim) {
if (/^(string|boolean|number)$/.test(typeof o)) return o;
delim = delim || '&'; // delimiter
var arr = [], isArray = true;
for (var j in o) {
if (isNaN(parseInt(j))) { isArray = false; break; }
}
if (isArray) {
for (var j in o) arr[j] = objToStr(o[j],delim);
return arr.join(',');
}
for (var j in o) {
if (typeof o[j] != 'object') arr.push(j+'='+o[j]);
else arr.push(j+'='+objToStr(o[j],delim));
}
return arr.join(delim);
}
console.log(objToStr(multiArray,'&'))
编辑:如果这将是一个GET查询,你将需要在这里转义必要的字符。 此外,我不确定您期望的是以下数组的结果,因此我无法编写适合您需求的最佳代码。
var multiArray={ AAA:"one", BBB:"two", CCC:{ 0:"xxx", 1:"yyy", 2:{a:1, b:2}} };
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.