设置JSON数组上的结果值

set result value on JSON Array

本文关键字:结果 JSON 数组 设置      更新时间:2023-09-26

所以我有一个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
       }
    })
];

但似乎不工作,谁能有最好的实践这种情况下

使用.map:

var newData = data.map(function(obj) {
  return {
    text: obj.model_name,
    value: obj.vehicle_id,
  };
});

你的代码的问题是它没有做任何事情。虽然$.each将迭代数组,但您的函数不会改变元素。它甚至不创建一个新对象,您只是创建一个带有两个标签的块。你可以把它想成等于

for (var i = 0; i < arr.length; i++) {
  arr[i].model_name;
  arr[i].vehicle_id;
}

。您只是引用属性,但没有对这些值做任何事情。

就用map():

var newData = data.map(function(item) {
    return {
         text: item.model_name,
         value: item.vehicle_id
    };
});

看到MDN

使用'map'代替'each'。或者使用'$。每个都像这样:

var newdata = [];
$.each(data, function(index, Obj){
   newdata.push({
       text: Obj.model_name,
       value: Obj.vehicle_id
   })
});