我有一个看起来像这样转换双阵列JSON
[["BR",1],["USA",2],["CH",3]]
数组,我想将其转换为这样的事情
{"br":1,"usa":2,"ch":3};
任何线索?
谢谢你们伙计
我有一个看起来像这样转换双阵列JSON
[["BR",1],["USA",2],["CH",3]]
数组,我想将其转换为这样的事情
{"br":1,"usa":2,"ch":3};
任何线索?
谢谢你们伙计
var len = arr.length, i, hash = {};
for (i = 0; i < len; i++) {
hash[arr[i][0].toLowerCase()] = arr[i][1];
}
这将转换成一个对象。您可以在较新的浏览器中使用JSON.stringify(hash)
,或者如果您使用像jQuery这样的库,可以将其设置为JSON字符串。自己编写JSON有点容易出错,最好将它留给内建函数库和库。
这不是正确答案!
在这里你去:
function toJSON($array) {
if ($array.constructor !== Array) return false;
var $res = {};
for (var $subArray in $array) {
for (var $k in $array[$subArray]) {
$res[$k] = $array[$subArray][$k];
};
};
return $res;
};
//Example
var test = [["BR",1],["USA",2],["CH",3]];
$JSON = toJSON(test);
功能将检查类型的参数,如果它是一个数组,
功能将扫描并把它们放到一个JSON对象,然后返回。
由于种种原因,高于代码返回一个非常奇怪的物体,当我用换到循环,它返回的所有方法/在对象的构造属性..
一个同时努力,我终于之后想出更简单的版本,但其他用户在我使用之前已经使用过它。我不知道为什么,但是这次我花了一段时间才以简单的方式看到问题(意识到阵列的每个元素只有2个固定长度)。
function toJSON($array) {
if ($array.constructor !== Array) { return false; };
var $result = {};
for (var $i = 0; $i < $array.length; $i++) {
$result[$array[$i][0]] = $array[$i][1];
};
return $result;
};
我希望能有所帮助。
[X]
这就是我想出了:
var arr = new Array(new Array('BR', 1), new Array('CN', 2));
var results = new Object();
for(var i=0; i< arr.length; i++) {
results[arr[i][0]] = arr[i][1];
}
console.log(results);
这似乎工作,谢谢Amadan!将在短短几分钟内接受答案 – climboid 2011-12-14 04:40:08