Huỳ*_*yễn 1 javascript object destructuring ecmascript-6
说,我有一个对象
const range = { min: '10', max: '20' }
Run Code Online (Sandbox Code Playgroud)
我想对其进行分解,以便在此之后有2个变量:
- min值为10(not string '10'),以及
- max值为20
const { min, max } = range只会min得出的值为'10'(not 10)。我想要的是Number(10)
我该怎么办?我确实对ES6解构有所了解,并进行了一些研究,尝试了不同的语法,但找不到满意的解决方案。有人可以建议一个吗?
结论:下面的答案中有一个非常不错的聪明语法,但是对于真实的代码,我只会使用更冗长但可读的代码:
const range = { min: '10', max: '20' }
Run Code Online (Sandbox Code Playgroud)
一种方法是使用带有+min和+max作为默认值的两个额外变量,
const range = { min: '10', max: '20' }
const {min, max, numMin = +min, numMax = +max} = range
console.log(numMin, numMax)Run Code Online (Sandbox Code Playgroud)
注意:-在上述方法中,请确保您使用对象中不可用的额外变量的名称,否则它将不使用默认值
另一种方法是使用IIFE,在解构之前将对象值转换为数值
const range = { min: '10', max: '20' }
const {min,max} = ( ({min,max}) => ( {min: +min, max: +max} ) )(range)
console.log(min,max)Run Code Online (Sandbox Code Playgroud)
在实际目的或实际代码中,我不会使用这种棘手的方式,因为我更喜欢可读性,并且它具有自己的优势
const range = {
min: '10',
max: '20'
}
const min = parseInt(range.min)
const max = parseInt(range.max)
console.log(max, min)Run Code Online (Sandbox Code Playgroud)
您可以将解构后的值放入数组中,然后再次对映射后的值进行解构。
var range = { min: '10', max: '20' },
{ min, max } = range;
[min, max] = [min, max].map(Number);
console.log(typeof min, min);
console.log(typeof max, max);Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
63 次 |
| 最近记录: |