2016-04-11 136 views
3

如何可以轉換該:轉換Array對象爲JSON在Javascript

var expenseList = [[1,"Beverages"], 
        [2,"Condiments" ], 
        [3,"Confections" ], 
        [4,"Dairy Products" ], 
        [5,"Grains/Cereals" ], 
        [6,"Meat/Poultry" ], 
        [7,"Produce" ], 
        [8,"Seafood" ]]; 

成這樣:

output = [ 
       { value: 1, text: "Beverages" }, 
       { value: 2, text: "Condiments" }, 
       { value: 3, text: "Confections" }, 
       { value: 4, text: "Dairy Products" }, 
       { value: 5, text: "Grains/Cereals" }, 
       { value: 6, text: "Meat/Poultry" }, 
       { value: 7, text: "Produce" }, 
       { value: 8, text: "Seafood" } 
     ]; 

第一數據源可以作爲輸入和第二是所需的輸出。 我試圖將數組轉換爲使用循環的字符串類型,然後將字符串解析爲json,但Json.pasre在那裏引發錯誤。

var list = ''; 
for (var i = 0; i < expenseList.length; i++) { 
     var showText = expenseList[i][1].replace('"', '\\"'); 
     var key = expenseList[i][0]; 

    list = '{ value: ' + key + ', text: "' + value + '"},' + list; 
} 

    list = '[' + list.substr(0, list.length - 1) + ']'; 
    var bindList; 
    bindList = JSON.parse(list); 
+0

試圖建立一個JSON對象作爲字符串是非常容易出錯。 – dan08

+0

您所需的輸出中恰好有0(零)個「JSON對象」。或者任何與此有關的遠程JSON相關的東西。 –

回答

7

只是一味

var output = expenseList.map(function(val){ 
    return { value: val[0], text: val[1] } 
}); 
1

您可以使用Array.prototype.map

var list = expenseList.map(function(x) { 
    return { 
    value: x[0], 
    text: x[1] 
    }; 
}); 

要再變成JSON可以使用

var json = JSON.stringify(output); 
0

這裏是一個替代的解決方案,構建了陣列我n您嘗試的方式,但更正確:

var expenseList = [[1,"Beverages"], 
        [2,"Condiments" ], 
        [3,"Confections" ], 
        [4,"Dairy Products" ], 
        [5,"Grains/Cereals" ], 
        [6,"Meat/Poultry" ], 
        [7,"Produce" ], 
        [8,"Seafood" ]]; 

var list = []; 
for (var i = 0; i < expenseList.length; i++) { 
    var val = expenseList[i][0];  
    var txt = expenseList[i][1]; 

    list.push({value: val, text: txt}); 
} 

console.log(list); 
0

如果您不希望數組和哈希對象滿足您的要求,請使用此。

加載使用。

_.zipObject(_.map(expenseList,0),_.map(expenseList,1)) 

輸出將是

{1: "Beverages", 2: "Condiments", 3: "Confections", 4: "Dairy Products", 5: "Grains/Cereals", 6: "Meat/Poultry", 7: "Produce", 8: "Seafood"}