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) 我想向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)
我不使用const,let或者var因为this对象已经被声明。我怎样才能达到我的愿望?有可能destructuring assignment吗?
简单地可以通过正常分配:
this.a = obj.a;
this.b = obj.b;
this.c = obj.c;
Run Code Online (Sandbox Code Playgroud)
我只是想要正确的新JavaScript代码和漂亮的代码。
这似乎是一个愚蠢的问题。假设我有一个接受对象的函数。如何将该对象强制转换为props,但也可以解构props.id为id(在参数声明中)?
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
是否可以在对象破坏赋值中使用保留关键字。
具体来说,我正在尝试使用名为 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) 我正在使用一个不可变对象,我需要添加一个减去值的数组。
我知道可以通过以下方式使用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的数组中的键。
我需要在保持不变性的同时执行此操作,因此我不能仅遍历原始对象并将其从中删除,因此我认为以上内容将是解决该问题的一个聪明方法。
任何帮助表示赞赏。
我正在尝试使用对象解构来提取变量,但这些变量已经存在,就像这样
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) 我在 Graphql 指令定义中看到了这个语句:
const { resolve = defaultFieldResolver } = field;
Run Code Online (Sandbox Code Playgroud)
我知道这部分const { resolve } = field;意味着获取对象的resolve属性field并将其存储在局部变量中resolve。但我第一次遇到的是= defaultFieldResolver零件。等号在这里做什么?我已经进行了彻底的谷歌搜索,但也许我不知道要搜索的正确关键字,或者这可能是新的东西。
这是我看到这篇文章的链接。
谢谢一堆。
我在 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 时该函数无权访问?
我的数据集是一个对象数组,它们都只有两个键(id和name):
[{ 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)
我正在 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)
//该解决方案对我来说没有意义,因为它甚至没有提到统计数据。怎么会起作用呢?有人可以解释一下吗?先感谢您。
我需要使用箭头函数设置数组属性之一。在我的示例代码中,我添加了随机键和箭头函数。但是当我控制台输出时,我看不到“随机”键。这可以使用箭头函数来完成。
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