在对象解构后获取对象

时间:2017-11-30 18:21:02

标签: javascript ecmascript-6

我有以下对象:

original = {userName: "pepe", pass: "password", otherFields: "blabla"}

我想解构它以获得只有一个字段的另一个对象:userName

如果我这样做:

const {userName} = original
console.log(JSON.stringify(userName)) ---> "pepe", but I would like to obtain {userName: "pepe"}

或者

var newObj = {userName} = original
console.log(JSON.stringify(newObj)) ---> {userName: "pepe", pass: "password", otherFields: "blabla"}

我希望在{userName: "pepe"}之后获得running JSON.stringify(...),因为这样可以更轻松地在正文部分中使用此数据fetch。 我发现这样做的唯一方法如下:

const _body = {} 
  _body.userName = original.userName
  body: (JSON.stringify(_body)) 

但是当我在身体中发送更多字段时,我需要在此代码中添加行。有没有更好的方法来做我想要的?

2 个答案:

答案 0 :(得分:3)

基本上当你从对象中构造出你正在获得的价值时......值。因此,在这种情况下,userName将返回字符串"pepe"。您必须将新的对象字面值传入stringify调用才能获得所需的结果:

const original = { userName: "pepe", pass: "password", otherFields: "blabla" };
const { userName } = original;

console.log(JSON.stringify({ userName }));

答案 1 :(得分:0)

如果您最终需要更多属性,可以使用rest运算符来执行此操作。

const original = {userName: "pepe", pass: "password", otherFields: "blabla"}
    const {pass, otherFields, ...rest} = original

    console.log(JSON.stringify(rest))

只有这条路线才有,如果你有原始属性,你可能不想进入stringify,你必须将它们添加到解构,所以“休息”操作符不会选择它们。