使用deconstruct在其他对象上构造obect属性

时间:2018-05-08 07:05:50

标签: javascript ecmascript-6

我可以使用deconsturct动态构建对象吗? 就像我token位于this.request.body.token之下 如何获取值并将其分配给对象属性?试过下面的例子它不起作用:

const params = {
    token
} = this.request.body

console.log(params.token) //undefined

我必须这样做

const reqBody = this.request.body

const params = {
  token: reqBody.token
}

console.log(params.token) //123

2 个答案:

答案 0 :(得分:0)

在解构时使用冒号分配给具有与属性名称不同的名称的独立变量:

const obj = { request: { body: { token: 'abc' } } };
// obj is equivalent to the `this` in your code

const { request: { body: reqBody } } = obj;
console.log(reqBody);

如果您对变量名称只是body感到满意,那就更容易了:

const obj = { request: { body: { token: 'abc' } } };
// obj is equivalent to the `this` in your code

const { request: { body } } = obj;
console.log(body);

答案 1 :(得分:0)

如果您要解构的对象具有一些标准属性,则可以通过使用object rest省略来执行此操作:

const thisRequestBody = {
  a: 'a', 
  b: 'b',
  token: 'token'
}

const { a, b, ...params } = thisRequestBody;

console.log(params);