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;在我的代码中,以提高可读性。