javascript - 在 JavaScrypt 中使用相同的密钥进行解构
问题描述
如果我将limitfrom重命名为limitfrom2,我可以在第二种情况下达到limitfrom,但我不明白如何在不重命名密钥的情况下获得该值。也许我对解构本身做错了。
创建一个对象
const vedPlus = {
transferLegal: {
stageOne: {
limitfrom: 0,
limitUpTo: 60,
commission: 0
},
stageTwo: {
limitfrom2: 60,
limitUpTo2: 1000,
commission2: 29
},
}
然后我分 4 步进行解构。
const {transferLegal} = vedPlus
const {stageOne, stageTwo} = transferLegal
const {limitfrom, limitUpTo, commission} = stageOne
const {limitfrom2, limitUpTo2, commission2} = stageTwo
创建一个函数
function calc (i) {
if (i >= limitfrom && i <= limitUpTo) {
return i * commission
} else if (i >= limitfrom2 && i <= limitUpTo2) {
return i * commission2
} else {
console.log('error')
}
结果
const price = 71
console.log(calc(price))
有没有办法在不重命名密钥的情况下获得价值?
解决方案
您可以对两个内部对象使用相同的属性名称,然后在解构时使用const { prop: newName } = source
语法分配新的唯一名称以防止冲突。
它可能不会产生最易读的代码,但至少可以做到。
演示:
const vedPlus = {
transferLegal: {
stageOne: { limitfrom: 0, limitUpTo: 60, commission: 0 },
stageTwo: { limitfrom: 60, limitUpTo: 1000, commission: 29 },
}
}
const { transferLegal } = vedPlus;
const { stageOne, stageTwo } = transferLegal;
const { limitfrom, limitUpTo, commission } = stageOne;
const { limitfrom: limitfrom2, limitUpTo: limitUpTo2, commission: commission2 } = stageTwo;
console.log(limitfrom, limitUpTo, commission);
console.log(limitfrom2, limitUpTo2, commission2);
推荐阅读
- julia - 是否能够使用 PyCall.pyimport 编译 Julia 脚本?
- javascript - 如何使 aps.net 读取多个文件 ini 和行
- java - 以 UTF-8 文件格式打开 SpringBoot 资源
- javascript - React Class 方法返回 undef 而不是经过验证的值
- javascript - 子窗口加载事件在 Firefox 上不起作用
- excel - ADODB.Connection 慢在一台电脑上快速在另一台电脑上
- java - 如何使用 Streams Java 获取文件夹中文件的路径
- sql-server - Microsoft SQL Server:数字常量精度
- c - 使用 AVL 树进行递归,函数最小化
- c++ - 两个临时对象的地址在同一个表达式中是否保证不同?