3 回答
![?](http://img1.sycdn.imooc.com/54584f240001db0a02200220-100-100.jpg)
TA贡献1801条经验 获得超16个赞
一种方法是使用两个额外的变量+min和+max作为默认值,
const range = { min: '10', max: '20' }
const {min, max, numMin = +min, numMax = +max} = range
console.log(numMin, numMax)
注意:-在上面的方法中,请确保您使用对象中不可用的额外变量的名称,否则它不会使用默认值
另一种方法是使用IIFE,在解构之前将对象值转换为数值
const range = { min: '10', max: '20' }
const {min,max} = ( ({min,max}) => ( {min: +min, max: +max} ) )(range)
console.log(min,max)
在实际目的或实际代码中,我不会使用这种棘手的方法,因为我更喜欢可读性并且它有自己的好处
const range = {
min: '10',
max: '20'
}
const min = parseInt(range.min)
const max = parseInt(range.max)
console.log(max, min)
![?](http://img1.sycdn.imooc.com/5458502c00012d4a02200220-100-100.jpg)
TA贡献1848条经验 获得超10个赞
您可以在数组中获取解构值并再次解构映射值。
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);
![?](http://img1.sycdn.imooc.com/533e4c9c0001975102200220-100-100.jpg)
TA贡献1784条经验 获得超9个赞
我认为您不能将任何转换作为解构操作的一部分进行,但您可以先尝试进行转换。
如果你有这样的功能:
function parseKeys(obj) {
const parsed = {};
for (const key of Object.keys(obj)) {
try {
parsed[key] = parseInt(obj[key]);
} catch () {}
}
return { ...obj, ...parsed };
}
然后你可以有一个这样的单线:
const { min, max } = parseKeys(range);
添加回答
举报