我有一個看起來像這樣轉換雙陣列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