首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在对象内部使用解构赋值

如何在对象内部使用解构赋值
EN

Stack Overflow用户
提问于 2019-06-26 06:12:21
回答 3查看 113关注 0票数 1

可以在对象内部使用解构赋值吗?

这是可行的

代码语言:javascript
复制
        const test = {a: 'hey', b: 'hello'}
        const {a,b} = test;
        const destruct = {
            a,
            b
        };

想这样做吗?

代码语言:javascript
复制
    const test = {a: 'hey', b: 'hello'}
    // something like this
    const destruct = {
        {a,b}: test
    };

    const destruct = {
        {a}: test,
        {b}: test
    };
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-06-26 06:20:35

如果我没理解错的话,似乎spread syntax非常适合你的需求。

扩展语法"...“允许您将键/值对从源对象(即test)”扩展“到目标对象(即destruct):

代码语言:javascript
复制
const test = {
  a: 'hey',
  b: 'hello',
  c: 'goodbye'
}

const destruct = {
  // {a,b}: test <-- invalid syntax
  ...test // equivalent using the "spread" syntax
};

console.log(destruct)

此外,如果要从源对象中选择关键帧的子集并将这些关键帧展开到目标对象中,则可以通过以下方法实现:

代码语言:javascript
复制
const test = {
  a: 'hey',
  b: 'hello',
  c: 'goodbye'
}

/* Spread subset of keys from source object to target object */
const welcomeOnly = {
  ...({ a, b } = test, { a, b })
}

console.log('exclude goodbye, show welcomes only:', welcomeOnly);

第二个示例将源对象(即test)解构为一个对象,其中包含我们想要的键子集(ab)。

在该表达式的作用域中(即()之间的所有内容),这些键都可以作为局部变量访问。我们利用这一点,并将其传递给一个新对象(即{ a, b })。因为新对象是在,之后声明的,所以它将作为表达式的结果返回。

票数 2
EN

Stack Overflow用户

发布于 2019-06-26 12:50:27

如果您尝试获取属性的子集,则可以使用rest运算符

代码语言:javascript
复制
const test = {
  a: 'hey',
  b: 'hello',
  c: 'goodbye'
};

const { c, ...destruct } = test;

console.log(destruct);

这会将c分配给const,并将剩余的属性分配给const析构。首先列出所有不需要的属性,然后使用rest操作符捕获剩余的属性。

也适用于数组。

代码语言:javascript
复制
const test = ['hey', 'hello', 'goodbye'];

const [ first, ...rest ] = test;

console.log(rest);

票数 0
EN

Stack Overflow用户

发布于 2019-06-26 14:15:47

你可以试着像这样解构数组!

代码语言:javascript
复制
    let abc = {
      a: 'hello',
      b: 'hey',
      c: 'hi, there!'
    }


    let {a: x, b:y, c:z} = abc;

    console.log(x,y,z)  

// "hello"
   "hey"
   "hi, there!"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56762703

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档