为了账号安全,请及时绑定邮箱和手机立即绑定

用转换器解构对象

用转换器解构对象

慕田峪4524236 2021-11-04 15:22:28
说,我有一个对象const range = { min: '10', max: '20' }我想解构它,以便之后我有 2 个变量:-min值为10(not string '10'),以及-max值为20const { min, max } = range只会导致(not )min的值。我想要的是'10'10Number(10)我怎么能那样做?我确实对 ES6 解构有所了解,并做了一些研究,尝试了不同的语法,但找不到满意的解决方案。有人可以推荐一个吗?结论:下面的答案中有非常巧妙的语法,但是对于真正的代码,我只会使用更冗长但可读的语法:const min = +range.min // or Number(range.min) const max = -range.max // or Number(range.max)
查看完整描述

3 回答

?
侃侃尔雅

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)


查看完整回答
反对 回复 2021-11-04
?
慕桂英546537

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);


查看完整回答
反对 回复 2021-11-04
?
千万里不及你

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);


查看完整回答
反对 回复 2021-11-04
  • 3 回答
  • 0 关注
  • 155 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信