我收到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中实现这一目标。
答案 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));