所以我有一个var data
,其结果数组JSON值如下:
[
{"vehicle_id":"1", "model_name":"sedan"},
{"vehicle_id":"2", "model_name":"elf"},
{"vehicle_id":"3", "model_name":"truck"}
]
我想在新变量上设置每个值,如下所示:
var newdata = [
{
text: Obj.model_name
value: Obj.vehicle_id
},
{
text: Obj.model_name
value: Obj.vehicle_id
},
......
];
如何设置上面变量的每个值?
我已经尝试过这种方法:
var newdata = [
$.each(data, function(index, Obj){
{
text: Obj.model_name
value: Obj.vehicle_id
}
})
];
但似乎它不起作用,任何人都可以有这种情况的最佳实践吗?
答案 0 :(得分:5)
使用.map
:
var newData = data.map(function(obj) {
return {
text: obj.model_name,
value: obj.vehicle_id,
};
});
您的代码存在的问题是它没有做任何事情。虽然$.each
将迭代数组,但您的函数不会改变元素。它甚至不创建新对象,您只需创建一个block,其中包含两个labels。您可以将其视为等同于
for (var i = 0; i < arr.length; i++) {
arr[i].model_name;
arr[i].vehicle_id;
}
即。您只是引用属性,但没有对这些值做任何事情。
答案 1 :(得分:3)
只需使用map()
:
var newData = data.map(function(item) {
return {
text: item.model_name,
value: item.vehicle_id
};
});
请参阅MDN
答案 2 :(得分:0)
使用'map'而不是'each'。 或者像这样使用'$ .each':
var newdata = [];
$.each(data, function(index, Obj){
newdata.push({
text: Obj.model_name,
value: Obj.vehicle_id
})
});