javascript - 解构同名对象/键
问题描述
我有一个看起来像这样的对象:
const test = {
test: []
}
if (test) { // if the object it's not empty I want to do something
// I tried this but it won't work:
let { test } = test
}
任何从对象中解构密钥的方式。test.test
每次我想访问它的价值时总是这样做是一种痛苦。我不能更改其中任何一个的名称,所以这是不可能的。
解决方案
您需要检查对象是否不为空,例如:
if (Object.keys(test).length){
并且要解构,您需要使用不同的名称,因为它不能具有相同的名称:
let { test: testArr } = test
console.log(testArr)
根据评论,由El Aoutar Hamza在 Dave Newton 的帖子下发表评论
但是赋值 let { test } = test 是在 if 语句中完成的,这意味着在 if 中声明的 test 通常应该隐藏在 if 之外声明的变量,不是吗?为什么使用解构时有什么不同?
我想声明它不允许有同名,因为它会抛出错误。您不能在变量初始化之前访问它。
当你定义:
let { test } = test
它的行为类似于:(要理解的伪代码)
let test = undefined
{ test } = test
// this cannot be accessed as it's value is not initialized.
希望,你清楚我的意思。
推荐阅读
- javascript - 在 Storybook 中使用 react 导入组件库
- django - 使用 Docker 将 PostgreSQL 数据库连接到 Django 项目
- python - 如何在 DRF 中使用多对多直通模型
- r - R中迭代多维数组并比较它的元素的正确方法是什么?
- android - 如何通过 MobSF 运行动态分析?
- sql - 在 JOINS 和 top1 上使用 tie 嵌套查询
- python - 创建输出两个 Y 变量的 LSTM 神经网络
- java - 继续动画进入子活动
- image - 隐藏或删除 QML 项目中的图像
- laravel - 方法已定义但给出错误:尝试获取非对象的属性“标题”