jjzjj

destructuring

全部标签

javascript - 使用解构赋值交换元组元素

我想使用解构赋值就地交换元组的元素,如下所示:vara=[1,2];[a[1],a[0]]=a;但是,这会产生[1,1]。Babel将其编译为a[1]=a[0];a[0]=a[1];我本以为这应该编译为lettmp0=a[0];lettmp1=a[1];a[0]=tmp1;a[1]=tmp0;Traceur的行为与babel相同。所以我猜这是指定的行为?我想交换两个元素就地。唯一的方法就是...lettmp=a[0];a[0]=a[1];a[1]=tmp;但我认为以上是解构赋值应该让我避免不得不做的事情。我完全有能力颠倒数组中两个元素的顺序,所以这不是我的问题。我可以做一些像a.pus

javascript - 解构es6但传递动态变量

说我的状态是这样的:{item:{a:'a',b:'b'}}然后我可以通过以下操作从项目中提取a:const{a}=this.state.item但可以使用es6的{}动态拉取吗?例如const{variable}=this.state.item,其中variable可以是a或b. 最佳答案 作为4castle指出,你可以使用Computedobjectpropertynamesanddestructuring带有用于解构的附加键/值对变量。varobject={item:{a:'a0',b:'b0'}},key='b',value

javascript - 可以通过括号符号在 JavaScript 中解构吗?

这不一定是个问题,更多的是ESLint错误引起的好奇心,这让我想知道是否有更好的方法来禁用这一行的ESLint。考虑下面的代码片段。如果react/destructuring-assignment,ESLint会报错规则已启用,更喜欢const{arrayToPrint}=myArrays到constarrayToPrint=myArrays[arrayName]我的问题是,我没能找到对此的任何引用,所以我猜不是,有没有办法将[arrayName]移到左侧在不引用实际对象属性的情况下解构赋值?constmyArrays={arrayOne:['one'],arrayTwo:['two'

javascript - 使用嵌套对象和默认值进行解构

我正在使用解构来声明一些这样的变量:const{a,b,c}=require('./something'),{e='default',f='default'}=c;有没有办法把它变成单行?我试过类似的东西:const{a,b,c={e='default',f='default'}}=require('./something');但它给了我一个错误:SyntaxError:Invalidshorthandpropertyinitializer 最佳答案 如果对象中没有c,上面的代码将不起作用const{a,b,c:{e='defaul

javascript - 解构es6中的对象数组

在es6中,我如何使用解构来简化以下行?:constarray0=someArray[0].data;constarray1=someArray[1].data;constarray2=someArray[2].data; 最佳答案 使用解构是否真的是一种简化尚有争议,但这是可以做到的:const[{data:array0},{data:array1},{data:array2}]=someArray实例:constsomeArray=[{data:1},{data:2},{data:3}];const[{data:array0},

javascript - Babel 对 ES6 对象解构的实现是否正确?

所以基本的结构化很好,{a,b}=obj转译为a=obj.a;b=obj.b.我的问题是我不小心遇到了一些奇怪的语法,我想知道是否有人可以指出我的规范,因为我找不到它:({a,b}=obj).c这会执行两个a、b赋值,然后返回obj.c。对于字节流解码器,它实际上对我很有用,因为我可以写:letwidth=({bytes}=intDecode(bytes)).number;我的问题是我没有在任何地方看到这种语法,并且不想依赖未正确实现或处于提案阶段的东西。 最佳答案 解构赋值没有什么特别之处:它的求值方式与使用=运算符的任何其他赋值

javascript - ES6 解构具有相同属性名称的两个对象

我有两个具有以下语法的javascript对象:letsection={name:"foo",tables:[]}letfield={name:"bar",properties:{}}还有一个需要这些对象的函数,但在函数中我只使用每个对象的名称,所以我想知道我是否可以在函数声明中解构这两个对象,例如:functionsomething({name},{name}){//code}第一个应该是section.name,第二个应该是field.name。在这种情况下,有两个方法可以进行解构吗?或者我应该只检查函数中的名称?哪个更好?谢谢。 最佳答案

javascript - 解构赋值默认值

这个问题在这里已经有了答案:destructuringfalsyandnullwithdefaultparameters(1个回答)关闭4年前。我正在学习javascript,在尝试在解构时为变量提供默认值时,我有点受困于ES6语法。基本上,我试图分配一个变量,将对象属性的值赋给它,如果该值为false/null/undefined,我希望它是一个空对象。例如,letfoo={prop1:'hello!',prop2:null}constprop1=foo.prop1||{}constprop2=foo.prop2||{}console.log(prop1)//hello!consol

javascript - 从 undefined 解构时避免错误

假设我有这段代码:const{x,y}=point;Babel会把它变成:var_point=point,x=_point.x,y=_point.y;这很好,但是如果点未定义怎么办?现在我得到一个错误:“无法读取未定义的属性‘x’”。那么我该如何避免呢?我想做类似的事情const{x,y}={}=point;但这是一个语法错误。我只能看到这是一个选项:const{x,y}=point||{};哪个babel转译为:var_ref=point||{},x=_ref.x,y=_ref.y;这里我们创建一个对象只是为了避免未定义的错误。这看起来很浪费。我是否缺少一些可以避免这种情况的语法?可

javascript - 方法参数 : destructuring + keeping original parameter (ReactJS component)

这个问题在这里已经有了答案:ES6destructuringfunctionparameter-namingrootobject(5个答案)关闭3年前。有没有办法实现方法参数解构,又能获取方法参数。在具有无状态组件的React应用程序的上下文中,我希望能够替换constMyComponent=(props)=>{const{prop1,prop2}=props;return()}使用更简洁的语法,如constMyComponent=(props:{prop1,prop2})()有没有类似的语法可用?