将double数组转换为json

时间:2011-12-14 04:33:29

标签: javascript

我有一个看起来像这样的数组

[["BR",1],["USA",2],["CH",3]]

我想把它转换成这样的东西

{"br":1,"usa":2,"ch":3};

任何线索?

谢谢你们

4 个答案:

答案 0 :(得分:2)

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有点容易出错,最好留给内置函数库和库。

答案 1 :(得分:1)

嗯,怎么样才能继续做下去?

    result = {};
    for( var i = 0; i < theArray.length; i++ ) {
        result[theArray[i][0]] = theArray[i][1];
    }

答案 2 :(得分:0)

这不是正确答案!

你走了:

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对象,然后返回。

由于某些原因,上面的代码返回一个非常奇怪的对象,当我使用for-in循环它时,它返回Object构造函数中的所有方法/属性。

经过一段时间的尝试,我终于想出了更简单的版本,但其他用户在我之前使用过它。我不知道为什么,但这次我花了一段时间才以简单的方式看到问题(意识到数组的每个元素只有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]

答案 3 :(得分:0)

以下是我提出的建议:

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);