将Json数据转换为特定数组

时间:2013-04-12 10:19:16

标签: javascript arrays json

我收到json的回复,格式如下

["user0", "user1", "user2", "user3", "user5", "user6", "user7"]

我需要将其转换为以下格式

    [
     { id: 'user0', text: 'user1'},
     { id: 'user1', text: 'user2'},
     { id: 'user2', text: 'user3'},
     { id: 'user3', text: 'user4'},
     { id: 'user5', text: 'user5'},
     { id: 'user6', text: 'user6' },
     { id: 'user7', text: 'user7' }
    ];

如何在javascript中实现这一目标。

4 个答案:

答案 0 :(得分:0)

一个简单的循环应该做你需要的:

var myArray = ["user0", "user1", "user2", "user3", "user5", "user6", "user7"];
var newArray = [];
for (var i = 0, l = myArray.length; i < l; i++) {
    var newItem = {id : myArray[i], text: "user" + (i +1)};
    newArray.push(newItem);
}

JSFiddle示例 - http://jsfiddle.net/eVQWS/

答案 1 :(得分:0)

最简单的方法是使用map方法:

var arr = ["user0", "user1", "user2", "user3", "user5", "user6", "user7"],
    result = arr.map(function(e, i, a) {
        return { id: e, text: i < a.length - 1 ? a[i+1] : e };
    });

console.log(result);

请检查 MDN 上的browser compatibility,并根据需要使用shim

答案 2 :(得分:0)

在现代浏览器中,我会使用map

var array = ["user0", "user1", "user2", "user3", "user5", "user6", "user7"];

var newArray = array.map(function(item) {
    return {id: item, text: item};
})

如果你必须支持没有ES5支持的旧浏览器,我会使用垫片 - 通常我会填充所有ES5 methods,但你也可以只实现你需要的那个,一个实现示例在文档中

只是要知道,在ES6和Firefox Nightly中已经支持新的fat数组语法 - 你实际上可以拥有:

var array = ["user0", "user1", "user2", "user3", "user5", "user6", "user7"];

var newArray = array.map(item => ({id: item, text: item}));

答案 3 :(得分:0)

试试这个

    var a = ["user0", "user1", "user2", "user3", "user5", "user6", "user7"]
    var array = [];

    for(var i =0;i<a.length;i++)
    {
        var temp = new Object();
        temp.id= a[i];
        temp.text = a[i];
        array.push(temp);
        //alert(JSON.stringify(array));
    }

var requiredString = JSON.stringify(array);
alert(requiredString.replace(/"id"/g, 'id').replace(/"text"/g,text));