Javascript 用转换器分解对象

Javascript 用转换器分解对象,javascript,object,ecmascript-6,destructuring,Javascript,Object,Ecmascript 6,Destructuring,喂,我有一个目标 const range = { min: '10', max: '20' } 我想对它进行分解,这样我就有了两个变量: -值为10的最小值不是字符串“10”,并且 -最大值为20 const{min,max}=range将只产生值为“10”而不是“10”的min。我要的是10号 我怎么能这么做?我确实对ES6的解构有所了解,并做了一些研究,尝试了不同的语法,但找不到满意的解决方案。有人能推荐一个吗 总结:下面的答案中有非常好的聪明语法,但对于真正的代码,我只会选择更详细但可读

喂,我有一个目标

const range = { min: '10', max: '20' }
我想对它进行分解,这样我就有了两个变量: -值为10的最小值不是字符串“10”,并且 -最大值为20

const{min,max}=range将只产生值为“10”而不是“10”的min。我要的是10号

我怎么能这么做?我确实对ES6的解构有所了解,并做了一些研究,尝试了不同的语法,但找不到满意的解决方案。有人能推荐一个吗

总结:下面的答案中有非常好的聪明语法,但对于真正的代码,我只会选择更详细但可读的语法:

常数min=+range.min//或Numberrange.min 常量max=-range.max//或Numberrange.max
您可以在数组中获取已分解的值,然后再次对映射的值进行分解

变量范围={min:'10',max:'20'}, {min,max}=范围; [min,max]=[min,max].mapNumber; console.logtypeof min,min;
console.logtypeof max,max 您可以在数组中获取已分解的值,然后再次对映射的值进行分解

变量范围={min:'10',max:'20'}, {min,max}=范围; [min,max]=[min,max].mapNumber; console.logtypeof min,min;
console.logtypeof max,max 一种方法是使用两个额外的变量,+min和+max作为默认值

常量范围={min:'10',max:'20'} 常数{min,max,numMin=+min,numMax=+max}=range
console.lognumMin,numMax一种方法是使用两个额外变量,并将+min和+max作为默认值

常量范围={min:'10',max:'20'} 常数{min,max,numMin=+min,numMax=+max}=range
console.lognumMin,numMax我认为您不能将任何转换作为反结构化操作的一部分,但您可以尝试先进行转换

如果您有这样一个函数:

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);
然后你可以有一个这样的一行:

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

我不认为你可以做任何转换作为去结构化操作的一部分,但是你可以尝试先做一个转换

如果您有这样一个函数:

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);
然后你可以有一个这样的一行:

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

不确定你是否可以在上面应用函数,解构只是将一个对象/数组分配给一个变量范围不确定你是否可以在上面应用函数,解构只是将一个对象/数组分配给一个变量范围,就像第二个一样我喜欢第一个~在实际使用中我不会使用任何一个,我将简单地定义两个变量并将值解析为number,即const min=parseIntobj。min@CodeManiac但这就是我要做的。我希望有一些简单的语法,比如const{min,max}:Number=range或const Number{min,max}=range。除非,我将只定义两个变量。我喜欢第二个我喜欢第一个~在实际使用中,我不会使用任何一个,我将简单地定义两个变量并将值解析为数字,即const min=parseIntobj。min@CodeManiac但这就是我要做的。我希望有一些简单的语法,比如const{min,max}:Number=range或const Number{min,max}=range。除非,否则我将只定义两个变量。谢谢,我确实喜欢这个变量,但最终将使用const min=Numberrange.min;const max=Numberrange.max;在我的代码中,为了更好的可读性。谢谢,我确实喜欢这一个,但最终将使用const min=Numberrange.min;const max=Numberrange.max;在我的代码中,以提高可读性。