【问题标题】:How can I format a json, with dynamic keys? [duplicate]如何使用动态键格式化 json? [复制]
【发布时间】:2018-08-06 14:31:17
【问题描述】:
  var data= [{_id: "5a93cbd49ae761a4015f6346", nombre: "Chicago - Missouri", longitud: "-94.6807924", latitud: "38.287606"},
{ _id: "5a93ca539ae761a4015f6344", nombre: "Boston - Central Falss", longitud: "-71.4111895", latitud: "41.8902971"},
{ _id: "5a93ccbf9ae761a4015f6349", nombre: "Houston - Dallas", longitud: "-97.0117365", latitud: "32.8209296"}]

var d=[];
for(var i in data){
    d.push({ data[i].nombre:data[i]["_id"] })
}

我想要一个有结构的json

{ "nombre":"_id" }

例如:

 { "Chicago - Missouri":"5a93cbd49ae761a4015f6346"}
 { "Boston - Central Falss- Missouri": "5a93ca539ae761a4015f6344" }4

我的错误是什么?

谢谢

【问题讨论】:

    标签: javascript json


    【解决方案1】:

    试试这个 -

    var data= [{_id: "5a93cbd49ae761a4015f6346", nombre: "Chicago - Missouri", longitud: "-94.6807924", latitud: "38.287606"},
    { _id: "5a93ca539ae761a4015f6344", nombre: "Boston - Central Falss", longitud: "-71.4111895", latitud: "41.8902971"},
    { _id: "5a93ccbf9ae761a4015f6349", nombre: "Houston - Dallas", longitud: "-97.0117365", latitud: "32.8209296"}]
    
    var d =[];
    for(var i in data){
    	var pushObj = {};
        pushObj[data[i].nombre] = data[i]["_id"];
        d.push(pushObj)
    }
    console.log(d);

    【讨论】:

    • Array.prototype.map() 更快。它的运行速度大约是一次推入一个新数组的四倍。在我看来它更简单,但这是一个见仁见智的问题。 var newData = data.map( function(train){ let obj = {}; obj[train["_id"]] = train["nombre"]; return obj; } ); console.log(newData);
    【解决方案2】:

    先创建一个对象,添加数据后推入d

    var data= [{
      _id: "5a93cbd49ae761a4015f6346",
      nombre: "Chicago - Missouri", 
      longitud: "-94.6807924", 
      latitud: "38.287606"
    },{ 
      _id: "5a93ca539ae761a4015f6344", 
      nombre: "Boston - Central Falss", 
      longitud: "-71.4111895", 
      latitud: "41.8902971"
    },{ 
      _id: "5a93ccbf9ae761a4015f6349", 
      nombre: "Houston - Dallas", 
      longitud: "-97.0117365", 
      latitud: "32.8209296"
    }]
    
    var d=[];
    for(var i in data){
        var temp = {};
        temp[ data[i].nombre ] = data[i]["_id"];
        d.push(temp)
    }
    
    console.log(d);

    【讨论】:

      猜你喜欢
      • 2014-05-19
      • 2012-01-05
      • 2020-03-09
      • 2021-03-10
      • 1970-01-01
      • 2018-11-03
      • 1970-01-01
      • 2023-01-17
      • 2012-11-11
      相关资源
      最近更新 更多