问题:我怎样才能改变这一点:
console.log(prepararCoordenadas([
{ "nome": "Salvador", "coordenadas": ["-23.6821604","-46.8754915"]},
{ "nome": "Brasília", "coordenadas": ["-22.9137531","-73.5860657"]},
{ "nome": "Recife", "coordenadas": [ "-8.0462741","-35.0000824"]}
]));
就此?
{
'0':
{ nome: 'Salvador',
coordenadas: [-46.8755, -23.6822 ] },
'1':
{ nome: 'Brasília',
coordenadas: [-73.5861, -22.9137] },
'2': { nome: 'Recife',
coordenadas: [-35.0001, -8.0463] }
}
第一
- 是一个对象数组
- 拥有城市名称和一系列“coordenadas”,如字符串。
第二
- 是一个完整的对象
- 拥有城市的名称(与第一个相同)和一系列“coordenadas”,如十进制,后面有4个数字;
- 纬度和经度已更改 - 位置 - 第一个经度;
语言: Javascript
我尝试使用** Object.assign **,但缺少“coordenadas”的更改。
function prepararCoordenadas(array){
let obj = Object.assign({},array);
return obj;
}
// Test
console.log(prepararCoordenadas([
{ "nome": "Salvador", "coordenadas": ["-23.6821604","-46.8754915"]},
{ "nome": "Brasília", "coordenadas": ["-22.9137531","-73.5860657"]},
{ "nome": "Recife", "coordenadas": [ "-8.0462741","-35.0000824"]}
]));
任何人都可以帮助解决这个拼图功能吗?
答案 0 :(得分:0)
function prepararCoordenadas(array){
let objs = {...array}; //es6 spread operator
for (index in objs) { //for each object in objs
objs[index].coordenadas.forEach(coordenada => Number(coordenada)); //for each coordenada in coordenadas array, convert type to number
}
return objs;
}
在这种情况下,es6扩展运算符实际上与object.assign()完全相同,但是,它具有更简单的语法。
我认为会产生预期的结果,如果您有任何疑问,请随时提出。
答案 1 :(得分:0)
你可以reduce
进入一个对象并在每次迭代时转换coordenadas
:
const strToFixed4 = str => Number(str).toFixed(4);
const prepararCoordenadas = (array) => array.reduce(
(accum, { nome, coordenadas: [lat, lng] }, i) => (
{
...accum,
[i]: { nome, coordenadas: [strToFixed4(lng), strToFixed4(lat)] }
}),
{}
);
console.log(prepararCoordenadas([
{ "nome": "Salvador", "coordenadas": ["-23.6821604","-46.8754915"]},
{ "nome": "Brasília", "coordenadas": ["-22.9137531","-73.5860657"]},
{ "nome": "Recife", "coordenadas": [ "-8.0462741","-35.0000824"]}
]));

答案 2 :(得分:0)
最后的回答伙计们!谢谢你们两个!
const prepararCoordenadas = (array) => array.reduce(
(accum, { nome, coordenadas: [lat, lng] }, i) => (
{
...accum,
[i]: { nome, coordenadas: [Number(parseFloat(lng).toFixed(4)), Number(parseFloat(lat).toFixed(4))] }
}),
{}
);
console.log(prepararCoordenadas([
{ "nome": "São Paulo", "coordenadas": ["-23.6821604","-46.8754915"]},
{ "nome": "Rio de Janeiro", "coordenadas": ["-22.9137531","-73.5860657"]},
{ "nome": "Recife", "coordenadas": [ "-8.0462741","-35.0000824"]}
]));