我需要在Javascript中设置简单的var,以每个JSON行的循环中的JSON属性命名。它们的值也将来自JSON。
例如,这是我的模板:var paris = {lat: 48.866667, lng: 2.333333};
但是在Json行上有一个循环 var json [i] .code = {lat: json [i] .latitude ,lng: json [i] .longitude }; < / p>
这是我的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 +" }";
}
}
}
答案 0 :(得分:0)
这是使用Array.reduce
的转换,该转换可回溯到IE10:
function initMap() {
//Your template
var paris = {lat: 48.866667, lng: 2.333333};
//Your actual data
var json =[
{"code":"london","latitude":"50.633333","longitude":"3.066667"},
{"code":"berlin","latitude":"47.478419","longitude":"-0.563166"}
];
//Code to create new Object
var newObj = json.reduce((obj, data) => {
obj[data.code] = {lat:data.latitude, lng: data.longitude};
return obj;
}, {});
console.log(JSON.stringify(newObj,0,2));
}
initMap();
这将使用code
的值作为键将每个条目转换为新对象中的条目,而新数据是符合您要求的对象。
答案 1 :(得分:0)
首先,在声明变量后,请勿像这样var
之前使用关键字var json[i].code
,而只需写成json[i].code
。
然后,当您在代码中使用JSON时,无需在Javascript中的两个""
之间放置任何内容。
只需执行以下操作:
{
latitude: 50.6,
longitude: 50.7
}
不是这个:
"{
latitude: 50.6,
longitude: 50.7
}"
然后,您得到结果:
function initMap() {
var paris = {
lat: 48.866667,
lng: 2.333333
};
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++){
json[i] = {
code: json[i].code,
lat: json[i].latitude,
lng: json[i].longitude
};
}
console.log(json);
}
initMap();
答案 2 :(得分:-1)
如果我理解正确,则您正在尝试为每一行创建一个单独的变量。
您可以通过使用window属性使用全局变量来执行此操作,或者如果您希望将其在本地范围内定义为函数,则可以创建本地父对象。
//Defining the variables globally
function initMapGlobal() {
//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++) {
window[json[i].code] = JSON.parse('{"lat":' + json[i].latitude + ' , "lng": ' + json[i].longitude + ' }');
}
}
initMapGlobal();
console.log('Outside of Function - Global');
console.log('Variable Value: ', london);
console.log('Value of London Latitude: ', london.lat);
console.log('\n**************\n');
//Defining the variables local to the function
function initMapLocal() {
var cityParent = {};
//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++) {
cityParent[json[i].code] = JSON.parse('{"lat":' + json[i].latitude + ' , "lng": ' + json[i].longitude + ' }');
}
console.log('Inside of function:');
console.log('Variable Value: ', cityParent.london);
console.log('Value of London Latitude: ', cityParent.london.lat);
console.log('\n**************\n');
}
initMapLocal();
console.log('Outside of function: (these will crash because they are local)');
console.log('Variable Value: ', cityParent.london);
console.log('Value of London Latitude: ', cityParent.london.lat);
答案 3 :(得分:-2)
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 obj = {};
obj.lat = json[i].latitude;
obj.lng = json[i].longitude;
window[json[i].code] = obj;
}
}