【问题标题】:Transform Array of Objects (stringified) in JavaScript在 JavaScript 中转换对象数组(字符串化)
【发布时间】:2026-01-16 21:10:01
【问题描述】:

我在 JavaScript 中有这个对象,其数据来自 AJAX 响应:

var data1 = [
   {
      "id": "ID1",
      "name": "John"
   },
   {
      "id": "ID2",
      "name": "Mark"
   },
];

如何将其转换为:

var data2 = [["ID1", "John"],["ID2", "Mark"]];

我需要这种格式来将数据填充到现有的空 DataTables (row.add())。

感谢您的帮助。

编辑: 我将 "ID1""ID2" 添加到 data2

【问题讨论】:

    标签: javascript jquery arrays datatables


    【解决方案1】:

    如果还没有解析 AJAX 响应,则先将其设为 Object

    data1 = JSON.parse( ajaxResponseStr );
    

    假设data1已经是一个Object,简单试试

    data2 = data1.map( function(item){ return [item.name] });
    

    【讨论】:

    • 这个答案和下面的答案都是有用且可以接受的,但我只能接受一个。公平地说,我会接受这一点,因为这是第一次。谢谢大家。
    【解决方案2】:

    使用Array.prototype.map() 删除不需要的字段并将每个对象转换为指定的格式,如下所示:

    var data1 = [{
        "id": "ID1",
        "name": "John"
      },
      {
        "id": "ID2",
        "name": "Mark"
      },
    ];
    
    var data2 = data1.map(function(item) {
      return [item["name"]];
    });
    
    console.log(data2);

    【讨论】:

      【解决方案3】:

      您的data1 是一个数组,因此您可以轻松地在其上使用.map 方法。 .map 方法返回一个数组值,你从回调中返回。

      data2 = data1.map(function(item) { return [item.name]});
      

      【讨论】:

        【解决方案4】:

        根据你的数据结构,编码如下:

        var data2 = [];
        for(var i in data1){
            data2.push(data1[i].name)
        }
        

        【讨论】:

          【解决方案5】:

          只需使用Array.prototype.map()

          ES6:

          const data2 = data1.map(({ name }) => [name]);
          

          ES5:

          var data2 = data1.map(function(item) {
             return [item.name];
          });
          

          【讨论】:

            【解决方案6】:

            或者使用Array.prototype.reduce();

            var data1 = [
               {
                  "id": "ID1",
                  "name": "John"
               },
               {
                  "id": "ID2",
                  "name": "Mark"
               },
            ];
            
            var data2 = data1.reduce(function(accum, item) { accum.push([item.name]); return accum; }, []);
            console.log(data2);

            【讨论】:

              【解决方案7】:

              您可以使用array#map 创建名称和id 的数组。

              编辑: OP 更新了问题。编辑代码以返回 idname

              var data1 = [{"id": "ID1","name": "John"},{"id": "ID2","name": "Mark"}];
              var data2 = data1.map(({id, name}) => [id, name]);
              console.log(data2);

              【讨论】: