标签: destructuring

类构造函数中的ES6解构

这可能听起来很荒谬,但请耐心等待.我想知道在语言层面是否支持将对象解构为构造函数中的类属性,例如

class Human {
    // normally
    constructor({ firstname, lastname }) {
        this.firstname = firstname;
        this.lastname = lastname;
        this.fullname = `${this.firstname} ${this.lastname}`;
    }

    // is this possible?
    // it doesn't have to be an assignment for `this`, just something
    // to assign a lot of properties in one statement
    constructor(human) {
        this = { firstname, lastname };
        this.fullname = `${this.firstname} ${this.lastname}`;
    }
}
Run Code Online (Sandbox Code Playgroud)

javascript destructuring ecmascript-6

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

使用动态变量名一次分配多个变量

我知道我可以一次为多个值分配多个变量:

(foo, bar, baz) = 1, 2, 3
Run Code Online (Sandbox Code Playgroud)

并且foo = 1,bar = 2,依此类推.

但是,我如何才能使变量的名称更具动态性?也就是说,

somefunction(data,tupleofnames):
    (return that each name mapped to a single datum)

somefunction((1,2,3),(foo,bar,baz))     
Run Code Online (Sandbox Code Playgroud)

并有相同的?

python destructuring mass-assignment

20
推荐指数
4
解决办法
4万
查看次数

是否可以在JavaScript构造函数中构造实例/成员变量?

是否可以在JavaScript类的构造函数中使用解构赋值来分配实例变量,类似于如何对常规变量执行此操作?

以下示例有效:

var options = {one: 1, two: 2};
var {one, two} = options;
console.log(one) //=> 1
console.log(two) //=> 2
Run Code Online (Sandbox Code Playgroud)

但我不能得到类似以下的东西:

class Foo {
  constructor(options) {
    {this.one, this.two} = options;
    // This doesn't parse correctly and wrapping in parentheses doesn't help
  }
}

var foo = new Foo({one: 1, two: 2});
console.log(foo.one) //=> I want this to output 1
console.log(foo.two) //=> I want this to output 2
Run Code Online (Sandbox Code Playgroud)

javascript destructuring variable-assignment

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

解构时如何将字符串解析为数字?

我正在尝试围绕解构任务进行实验。现在,我有一个案例,我试图应对自身的破坏。

例如,我有这样的输入:

let input = {latitude: "17.0009", longitude: "82.2108"}
Run Code Online (Sandbox Code Playgroud)

其中latitudelongitude键值是字符串,但我想在进行结构分解时将它们解析为数字。

let input = {latitude: "17.0009", longitude: "82.2108"}
Run Code Online (Sandbox Code Playgroud)

我可以在babel repl中看到这需要引用一个对象,然后访问每个键。因此,以上代码与以下代码相同:

"use strict";

 var arr = {
   latitude: "17.0009",
   longitude: "82.2108"
  };
 var latitude = arr.latitude,
     longitude = arr.longitude;
Run Code Online (Sandbox Code Playgroud)

我想做一些使用解构语法本身的事情。

"use strict";

var arr = {
  latitude: "17.0009",
  longitude: "82.2108"
};
var latitude = Number(arr.latitude),
    longitude = Number(arr.longitude);
Run Code Online (Sandbox Code Playgroud)

我也很乐意看到一些技巧。

更新资料

我可以与,操作员一起提出一些建议:

let input = {latitude: "17.0009", longitude: "82.2108"}
let {latitude,longitude} = input

console.log(typeof latitude,typeof …
Run Code Online (Sandbox Code Playgroud)

javascript destructuring ecmascript-6

19
推荐指数
3
解决办法
1306
查看次数

使用非有效变量名称的属性名称进行对象解构

有谁知道你是否可以在属性名称中使用带空格的对象解构?也许这不能做,我意识到JavaScript表示法不正确,但我无法更改服务器json响应.

var obj1 = {name: 'Mr Smith', age: 21};
//destructure
var {name, age} = obj1;
//name='Mr Smith' and age=21
Run Code Online (Sandbox Code Playgroud)

这按预期工作.

但是,当我有以下对象结构时,我可以使用对象解构吗?

var obj2 = {"my name": "Mr Jones", age: 22};
var {'my name', age} = obj2; 
Run Code Online (Sandbox Code Playgroud)

如果这是不可能的话,如果我可以使用某种语法(例如'as')分配变量,这将是很好的...

var {'my name' as name, age} = obj2; //name='Mr Jones';
Run Code Online (Sandbox Code Playgroud)

谢谢

destructuring typescript ecmascript-6

18
推荐指数
2
解决办法
1824
查看次数

ES6/ES2015对象解构和改变目标变量

如何在对象破坏期间重命名目标?

const b = 6;
const test = { a: 1, b: 2 };
const {a, b as c} = test; // <-- `as` does not seem to be valid in ES6/ES2015
// a === 1
// b === 6
// c === 2
Run Code Online (Sandbox Code Playgroud)

javascript destructuring ecmascript-6

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

将数组析构到对象属性键

我有一系列的值,如:

const arr = [1,2,3];
Run Code Online (Sandbox Code Playgroud)

有什么方法可以使用解构来创建以下输出?如果没有,我在ES6(或更高版本)中最简单的方法是什么?

const obj = {
    one: 1,
    two: 2,
    three: 3
};
Run Code Online (Sandbox Code Playgroud)

我试过这个,但我猜它不起作用,因为这是计算键的语法:

const arr = [1,2,3];
const obj = {
  [one, two, three] = arr
};
Run Code Online (Sandbox Code Playgroud)

javascript destructuring ecmascript-7 ecmascript-next

17
推荐指数
4
解决办法
7199
查看次数

在C#中处理可变数量的输出参数,减少代码重复

我正在尝试编写一个用数组内容填充字符串的函数,或者将它们设置为null.字符串的数量可以变化,我不想添加像它们一样的要求都是同一个数组或类的一部分.

在C#中你无法组合paramout.因此,这样做的唯一方法似乎是重载这样的方法:

    public void ParseRemainders(string[] remainders, out string p1)
    {
        p1 = null;
        if ((remainders != null) && (remainders.Length > 0))
            p1 = remainders[0];
    }

    public void ParseRemainders(string[] remainders, out string p1, out string p2)
    {
        p1 = null;
        p2 = null;
        if (remainders != null)
        {
            ParseRemainders(remainders, out p1);
            if (remainders.Length > 1)
                p2 = remainders[1];
        }
    }

    public void ParseRemainders(string[] remainders, out string p1, out string p2, out string p3)
    {
        p1 = null; …
Run Code Online (Sandbox Code Playgroud)

c# arrays destructuring

17
推荐指数
4
解决办法
1998
查看次数

在退货声明中进行ES6解构

是否可以在同时返回对象时对其进行解构.例如,要更改此代码:

const mapStateToProps = ({ newItem }) =>{
  const { id, name, price } = newItem;
  return { id, name, price };
}
Run Code Online (Sandbox Code Playgroud)

对于这样的事情:

const mapStateToProps = ({ newItem }) =>{
  return { id, name, price } = newItem;
}
Run Code Online (Sandbox Code Playgroud)

javascript destructuring ecmascript-6

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

React hooks:如何使用 useState() 更新嵌套对象的状态?

我有一个组件,它接收一个看起来像这样的道具:

const styles = {
    font: {
        size: {
            value: '22',
            unit: 'px'
        },
        weight: 'bold',
        color: '#663300',
        family: 'arial',
        align: 'center'
    }
};
Run Code Online (Sandbox Code Playgroud)

我正在尝试更新该align属性,但是当我尝试更新该对象时,我最终仅用该align属性替换了整个对象。

这就是我更新它的方式:

const { ...styling } = styles;
const [style, setStyle] = useState(styling);

return (
        <RadioButtonGroup
            onChange={(event) => {
                setStyle({ ...style, font: { align: event.target.value } });
                console.log(style);
            }}
        />);
Run Code Online (Sandbox Code Playgroud)

当我 console.logstyle我刚{"font":{"align":"left"}}回来。我希望看到整个对象的更新值align。我是解构的新手,所以我在这里做错了什么?

javascript destructuring reactjs

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