首页 > 解决方案 > 解构同名对象/键

问题描述

我有一个看起来像这样的对象:

 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每次我想访问它的价值时总是这样做是一种痛苦。我不能更改其中任何一个的名称,所以这是不可能的。

标签: javascriptnode.js

解决方案


您需要检查对象是否不为空,例如:

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.

希望,你清楚我的意思。


推荐阅读