【发布时间】:2019-03-16 06:35:57
【问题描述】:
我正在尝试围绕解构分配进行试验。现在我有一个案例,我试图解决自身的解构问题。
例如,我有这样的输入:
let input = {latitude: "17.0009", longitude: "82.2108"}
其中latitude 和longitude 键值是字符串,但我想在解构时将它们解析为数字。
let input = {latitude: "17.0009", longitude: "82.2108"}
let {latitude,longitude} = input
console.log(typeof latitude,typeof longitude)
我可以在babel repl 中看到这需要一个对象的引用,然后访问每个键。所以上面的代码是一样的:
"use strict";
var arr = {
latitude: "17.0009",
longitude: "82.2108"
};
var latitude = arr.latitude,
longitude = arr.longitude;
我想做一些事情,比如使用解构语法本身。
"use strict";
var arr = {
latitude: "17.0009",
longitude: "82.2108"
};
var latitude = Number(arr.latitude),
longitude = Number(arr.longitude);
我也乐于看到一些黑客行为。
更新
我可以用, 运算符提出一个技巧:
let arr = {latitude: "17.0009", longitude: "82.2108"}
let {lat,lng} = ({latitude,longitude} = arr, ({lat:+latitude,lng:+longitude}))
console.log(typeof lat, typeof lng)
附注:-你必须阅读 Moritz Roessler's answer这是hacky但包含很好的知识和信息
【问题讨论】:
-
let input = {latitude: "17.0009"- 0, longitude: "82.2108"- 0}虽然实际上解构表达式不允许只赋值。允许之前或之后... -
@zer00ne 但我无法更改输入,例如将其视为来自第三方。
-
输入作为函数的返回怎么样?
-
take this as reference 我想做的是
{lat:+lat,lng:+lng}到{lat,lng}如果我能够解构并将其解析为数字 -
返回时好像有类型转换
标签: javascript ecmascript-6 destructuring