Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/443.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从JSON属性在Javascript中创建变量名_Javascript_Json_Variables - Fatal编程技术网

如何从JSON属性在Javascript中创建变量名

如何从JSON属性在Javascript中创建变量名,javascript,json,variables,Javascript,Json,Variables,我需要在Javascript中设置简单的var,以每个JSON行上循环的JSON属性命名。它们的值也将来自JSON 例如,这里是我的模板:var paris={lat:48.866667,lng:2.333333} 但是在Json行上有一个循环 var json[i]。代码={lat:json[i]。纬度,lng:json[i]。经度} 这是我的JS代码,到目前为止我还不知道如何让它工作。。。谢谢你宝贵的帮助 function initMap() { //my template

我需要在Javascript中设置简单的var,以每个JSON行上循环的JSON属性命名。它们的值也将来自JSON

例如,这里是我的模板:var paris={lat:48.866667,lng:2.333333}

但是在Json行上有一个循环 var json[i]。代码={lat:json[i]。纬度,lng:json[i]。经度}

这是我的JS代码,到目前为止我还不知道如何让它工作。。。谢谢你宝贵的帮助

function initMap() {

  //my template 
    var paris = {lat: 48.866667, lng: 2.333333};

    //my actual data
    var json=[{"code":"london","latitude":"50.633333","longitude":"3.066667"},{"code":"berlin","latitude":"47.478419","longitude":"-0.563166"}];            

    //my code to create my vars from Json
    for( var i=0;i< json.length; i++ ){
        var json[i].code = "{lat:" + json[i].latitude + " , lng: " +json[i].longitude +" }";
        }
    }
}

下面是使用Array.reduce进行的转换,该转换可回溯到IE10:

函数初始化映射{ //你的模板 var paris={lat:48.866667,lng:2.333333}; //你的实际数据 var-json=[ {代码:伦敦,纬度:50.633333,经度:3.066667}, {代码:柏林,纬度:47.478419,经度:-0.563166} ]; //创建新对象的代码 var newObj=json.reduceobj,数据=>{ obj[data.code]={lat:data.latitude,lng:data.longitude}; 返回obj; }, {}; console.logJSON.stringifynewObj,0,2; }
initMap 首先,当声明变量时,您不应该像下面这样使用关键字var:var json[i].code,只需写:json[i].code即可

然后,当您在代码中使用JSON时,您不需要在Javascript中将两者之间放置任何内容

只要这样做:

{
  latitude: 50.6,
  longitude: 50.7
}
而不是这个:

"{
  latitude: 50.6,
  longitude: 50.7
}"
然后,您将得到以下结果:

函数初始化映射{ 巴黎var={ 拉脱维亚:48.866667, 液化天然气:2.333333 }; var json=[ { 代码:伦敦, 纬度:50.633333, 经度:3.066667 }, { 代码:柏林, 纬度:47.478419, 经度:-0.563166 } ]; //从Json创建变量的代码 forvar i=0;iinitMap 如果我理解正确,您正在尝试为每一行创建一个单独的变量

您可以通过使用window属性使用全局变量来实现这一点,或者如果希望将其局部范围限定到函数,则可以创建一个局部父对象

//全局定义变量 函数initMapGlobal{ //我的模板 巴黎var={ 拉脱维亚:48.866667, 液化天然气:2.333333 }; //我的实际数据 var json=[{ 代码:伦敦, 纬度:50.633333, 经度:3.066667 }, { 代码:柏林, 纬度:47.478419, 经度:-0.563166 }]; //从Json创建变量的代码 对于var i=0;iconsole.log“伦敦纬度值:”,cityParent.London.lat;要确认,您想要基于JSON属性的动态var名称吗?您可能首先考虑将JSON转换为对象,然后在for循环中使用该对象——查看JSON.PARSE。或者,不要在数组中定义类似于json的内容,而是通过删除标识符周围的代码变为代码等方式将其更改为对象。首先,您的var json=。。。不是JSON,而是对象的Javascript数组。JSON代表JavaScript对象表示法,是一种将JavaScript对象(包括数组)表示为文本的方法,需要解析该文本才能将其转换回JavaScript对象。接下来,您不希望无法创建以城市代码命名的变量-在您编写的源代码中无法引用它们,您必须使用以城市名称“代码”为键的某种地图。e、 g.var cities={};城市['london']={代码:伦敦,纬度:50.63,经度:3.06};您的解析将无效。希望现在可以修复。很难在电话上调试。
你的答案中还有几个错误。1.您留下了一个无效的}2。您的json解析格式仍然不正确,因为无法使用单引号对json.parse进行解析。3.即使在修复了格式错误后,您的end json也将返回无效响应。[{代码:{lat:50.633333,lng:3.066667},纬度:50.633333,经度:3.066667},{代码:{lat:47.478419,lng:-0.563166},纬度:47.478419,经度:-0.563166}他将失去我认为重要的房产名称。我们怎么知道哪个元素适合伦敦?哪个去柏林?这段代码没有解释这一点。是的,这是一个错误,Sorry我不明白他是想用城市的名字创建一个JSON对象,还是想把这个名字放在主JSON对象中
"{
  latitude: 50.6,
  longitude: 50.7
}"