columnsData值分配给columns时,我有两个JSON对象columnsDatacolumns,两个值都被更改。

var columnsData = [
      {id: "id"},
      {id: "root_task_assignee"},
      {id: "root_task_id"},
      {id: "root_task_status"},
      {id: "root_task_tracker"},
      {id: "rt_category"},
      {id: "rt_priority"},
      {id: "rt_subject"},
]
var columns = [];


使用以下功能,我将columnsData值分配给columns对象,并且还添加了一些其他字段

for(i = 0;i < columnsData.length; i++){
    columns[i] = columnsData[i];
    columns[i]["name"] = columnsData[i]["name"] || columnsData[i]["id"];
    columns[i]["type"] = columnsData[i]["id"]["type"] || "string";
}


但分配后两者的值相同。旧的JSON columnsData值如何更改?还有其他分配值的方法吗

最佳答案

如果需要保持原始数组纯净(不变),则应使用array的map方法。

var columnsData = [
  {id: "id"},
  {id: "root_task_assignee"},
  {id: "root_task_id"},
  {id: "root_task_status"},
  {id: "root_task_tracker"},
  {id: "rt_category"},
  {id: "rt_priority"},
  {id: "rt_subject"},
]

 var columns = columnsData.map(function(obj){
    var rObj = {};
    rObj[obj.key] = obj.value;
    rObj["name"] = obj.value;
    .....
    return rObj;
});


可以在map方法中添加逻辑以根据需要创建新数组。希望能帮助到你。

09-25 21:29