标签: object-destructuring

object destructing inside constructor in nodejs to assign values to member variable not working

I am trying ES6 object destructuring inside a constructor hoping to assign value to a member variable. It is not working. Its showing undefined when I am printing the value inside a member function. Its printing correctly if I print inside the constructor.Is this valid?

    class Environment {
        constructor(env) {
            const { name, version } = env
            console.log(name)
        }

        printName() {
            console.log(this.name)
        }
    }
    var obj = { "name": "inst1", "version": "12.2.7" };
    var envObj = new Environment(obj);
    envObj.printName();
Run Code Online (Sandbox Code Playgroud)

node.js ecmascript-6 object-destructuring

4
推荐指数
1
解决办法
1627
查看次数

如何通过解构赋值将数据绑定到 this?

我想向thisobject by添加新的键和值destructuring assignment,但它出错了:

Uncaught SyntaxError: Unexpected token :
Run Code Online (Sandbox Code Playgroud)

让我们看看我的例子,假设我有obj数据对象:

const obj = {
    'a':'1',
    'b':'2',
    'c':'3',
};
Run Code Online (Sandbox Code Playgroud)

现在我想将此数据绑定到this对象,这意味着我们想要:

console.log(this.a); //=> "1"
Run Code Online (Sandbox Code Playgroud)

因此,在解构赋值中,我这样写:

{
    a: this.a,
    b: this.b,
    c: this.c,
} = obj;
Run Code Online (Sandbox Code Playgroud)

但它陷入了错误:

Uncaught SyntaxError: Unexpected token :
Run Code Online (Sandbox Code Playgroud)

我不使用constlet或者var因为this对象已经被声明。我怎样才能达到我的愿望?有可能destructuring assignment吗?

简单地可以通过正常分配:

this.a = obj.a;
this.b = obj.b;
this.c = obj.c;
Run Code Online (Sandbox Code Playgroud)

我只是想要正确的新JavaScript代码和漂亮的代码。

javascript object-destructuring

4
推荐指数
1
解决办法
401
查看次数

转换和解构参数的 JavaScript 语法是什么?

这似乎是一个愚蠢的问题。假设我有一个接受对象的函数。如何将该对象强制转换为props,但也可以解构props.idid(在参数声明中)?

function go ({ id }) {
  const props = arguments[0]; // how to do this with destructure?
  console.log('props', props, 'id', id);
}

go({id: 2});
Run Code Online (Sandbox Code Playgroud)

javascript object destructuring ecmascript-6 object-destructuring

4
推荐指数
1
解决办法
609
查看次数

转义对象破坏赋值中的保留关键字

是否可以在对象破坏赋值中使用保留关键字。

具体来说,我正在尝试使用名为 default 的属性来处理 JSON。

//Doesn't compile
class FooBar {
  constructor({foo, default}) {
    this.foo = foo;
    this.default = default;
  }
}
Run Code Online (Sandbox Code Playgroud)


/* json from server {foo: "bar", default: true} */
new FooBar(json);
Run Code Online (Sandbox Code Playgroud)

javascript json object-destructuring

3
推荐指数
1
解决办法
863
查看次数

如何基于动态定义的变量解构对象

我正在使用一个不可变对象,我需要添加一个减去值的数组。

我知道可以通过以下方式使用ES6销毁。

const {countries, remainder} = someObj // {countries:...,languages:..., ...keys};
Run Code Online (Sandbox Code Playgroud)

最后,剩下的就是没有国家密钥的新对象。

因此,我发现可以在数组上使用reduce来从对象中删除所有值,并使用默认参数作为原始对象,最后返回一个新对象。

但是,我不确定该怎么做,因为键的名称是在数组中定义的。

arrayToRemove.reduce((total, value) => {
  const { extractValue: [value], ...remainder } = total
  return remainder;
}, { ...originalObj });

arrayToRemove.reduce((total, value) => {
  const { [extractValue], ...remainder } = total
  return remainder;
}, { ...originalObj });
Run Code Online (Sandbox Code Playgroud)

我期望最终得到一个新的Object,而没有包含在名为arrayToRemove的数组中的键。

我需要在保持不变性的同时执行此操作,因此我不能仅遍历原始对象并将其从中删除,因此我认为以上内容将是解决该问题的一个聪明方法。

任何帮助表示赞赏。

javascript destructuring ecmascript-6 object-destructuring

3
推荐指数
2
解决办法
680
查看次数

是否可以将对象解构为现有变量?

我正在尝试使用对象解构来提取变量,但这些变量已经存在,就像这样

const x=1, y=2 // Those should be 1 and 2
const {x,y} = complexPoint
const point = {x,y}
Run Code Online (Sandbox Code Playgroud)

有没有办法在不重命名解构变量的情况下做到这一点?有些人喜欢这样并更新点避免const定义?

const point = {x,y} = complexPoint
Run Code Online (Sandbox Code Playgroud)

预期的结果应该是使用对象解构

const x=1, y=2 // Those should be 1 and 2
const point = {
  x:complexPoint.x,
  y:complexPoint.y
}
Run Code Online (Sandbox Code Playgroud)

javascript destructuring ecmascript-6 object-destructuring

3
推荐指数
2
解决办法
1107
查看次数

对象解构花括号内的等号

我在 Graphql 指令定义中看到了这个语句:

const { resolve = defaultFieldResolver } = field;
Run Code Online (Sandbox Code Playgroud)

我知道这部分const { resolve } = field;意味着获取对象的resolve属性field并将其存储在局部变量中resolve。但我第一次遇到的是= defaultFieldResolver零件。等号在这里做什么?我已经进行了彻底的谷歌搜索,但也许我不知道要搜索的正确关键字,或者这可能是新的东西。

这是我看到这篇文章的链接。

谢谢一堆。

javascript object-destructuring

3
推荐指数
1
解决办法
44
查看次数

ES6 函数在解构对象时无权访问“this”

我在 ES6 学习材料中尝试了以下问题

const circle = {
  radius: 10,
  color: 'orange',
  getArea: function() {
    return Math.PI * this.radius * this.radius;
  },
  getCircumference: function() {
    return 2 * Math.PI * this.radius;
  }
};

let {radius, getArea, getCircumference} = circle;
console.log(getArea())
Run Code Online (Sandbox Code Playgroud)

起初我以为打印的结果是,314.1592653589793但结果打印的结果是NaN. 这意味着该getArea()函数无权访问this. 为什么this在解构 Object 时该函数无权访问?

javascript ecmascript-6 object-destructuring

2
推荐指数
1
解决办法
84
查看次数

如何将对象数组解构为其键的多个数组?

我的数据集是一个对象数组,它们都只有两个键(idname):

[{ id: 1, name: 'Foo'}, { id: 2, name: 'Bar'}, { id: 3, name: 'FooBar'}, { id: 4, name: 'BarFoo'}]
Run Code Online (Sandbox Code Playgroud)

我想以这样的方式解构它们,最终分别得到一个 id 数组和一个 name 数组:

[1, 2, 3, 4] // ids
['Foo', 'Bar', 'FooBar', 'BarFoo'] // name
Run Code Online (Sandbox Code Playgroud)

我这样做了,但我认为通过解构可能可以做得更好:

[{ id: 1, name: 'Foo'}, { id: 2, name: 'Bar'}, { id: 3, name: 'FooBar'}, { id: 4, name: 'BarFoo'}]
Run Code Online (Sandbox Code Playgroud)

javascript arrays object-destructuring

2
推荐指数
1
解决办法
3109
查看次数

解构赋值以将对象作为函数的参数传递

我正在 freeCodeCamp 上学习 Javascript,我遇到了通过重组赋值将对象作为函数参数传递的情况

我被要求

“在函数 half 的参数中使用解构赋值,仅在函数内发送 max 和 min。”

const stats = {
  max: 56.78,
  standard_deviation: 4.34,
  median: 34.54,
  mode: 23.87,
  min: -0.75,
  average: 35.85
};

// Only change code below this line
const half = ({ max, min }) => (max + min) / 2.0; 
// Only change code above this line
Run Code Online (Sandbox Code Playgroud)

//该解决方案对我来说没有意义,因为它甚至没有提到统计数据。怎么会起作用呢?有人可以解释一下吗?先感谢您。

javascript object-destructuring

1
推荐指数
1
解决办法
1476
查看次数

如何通过箭头函数分配数组元素的值

我需要使用箭头函数设置数组属性之一。在我的示例代码中,我添加了随机键和箭头函数。但是当我控制台输出时,我看不到“随机”键。这可以使用箭头函数来完成。

let Allitems = {"items":[{"id":74489},{"id":64489},{"id":53489}]};

const newarr = Allitems.items.map(e => ({...e, name:"newnamme", random: (e) => { return e.id + "random"; } }));
 console.log(newarr);
Run Code Online (Sandbox Code Playgroud)

// expected output
{"items":[ 
{"id":74489,name:"newnamme", random : "74489random"},
{"id":64489,name:"newnamme", random : "64489random"},
{"id":53489,name:"newnamme", random : "53489random"}]
}
Run Code Online (Sandbox Code Playgroud)

javascript arrays function arrow-functions object-destructuring

-1
推荐指数
1
解决办法
66
查看次数