Javascript ES6中的解构

Javascript ES6中的解构,javascript,ecmascript-6,destructuring,Javascript,Ecmascript 6,Destructuring,在es6中使用解构是否有更好的方法来实现这一点 searchCreated(searchParams) { this.regionId = searchParams.region; this.maxPrice = searchParams.maxPrice; this.minPrice = searchParams.minPrice; this.selectedLocalities = searchParams.selectedLocalities;

在es6中使用解构是否有更好的方法来实现这一点

  searchCreated(searchParams) {
    this.regionId = searchParams.region;
    this.maxPrice = searchParams.maxPrice;
    this.minPrice = searchParams.minPrice;
    this.selectedLocalities = searchParams.selectedLocalities;
    this.propertyTypeId = searchParams.propertyTypeId;
    this.minBeds = searchParams.minBeds;
    this.maxBeds = searchParams.maxBeds;
    this.minSize = searchParams.minSize;
    this.maxSize = searchParams.maxSize;
    this.keyword = searchParams.keyword;
    this.ber = searchParams.ber;
}

如果所有这些值都是它们自己的,而不是
这个
的属性,我就可以了。我只是不确定是否有一种优雅的方法可以有效地将一个对象映射到另一个对象上,因为您正在将所有的
searchParam
属性添加到
这个
,您可以使用它,它基本上将一个对象的属性复制到另一个对象上

在您的代码中,如下所示:

searchCreated(searchParams) {
    Object.assign(this, searchParams, { // additional object for custom params
        region: searchParams.regionId,
        customParamName: searchParams.customParam
    }); 
}

因为您要将所有的
searchParam
属性添加到此
中,所以您可以使用,它基本上将一个对象的属性复制到另一个对象

在您的代码中,如下所示:

searchCreated(searchParams) {
    Object.assign(this, searchParams, { // additional object for custom params
        region: searchParams.regionId,
        customParamName: searchParams.customParam
    }); 
}
您可以使用收集所有道具,但需要重命名的道具除外。您可以在分解结构时执行此操作。然后使用Object#assign将所有内容合并到
this

注意:对象静止/展开仍然是一个建议,需要一个

您可以使用收集所有道具,但需要重命名的道具除外。您可以在分解结构时执行此操作。然后使用Object#assign将所有内容合并到
this

注意:对象静止/展开仍然是一个建议,需要一个


存在属性名称不总是匹配的边缘情况:
this.regionId=searchParams.region
@Kunukn如果是这样的话,我建议保持你的接口/模型签名同步,或者一次性使用getter。我们仍然可以使用
对象。通过传递一个额外的对象来分配
,并明确说明边缘情况。见最新答案。是的,这是个问题。不过,我现在有另一个问题。如果在searchParams对象中没有指定属性,我需要将其分配给该对象,但为null。例如,在一次搜索中,可以在searchParams中设置maxPrice,但是在第二次搜索中,如果没有指定maxPrice,我需要它在这个对象上为null,而不是之前的值啊,如果需要将
未定义的
值转换为
null
,无法避免列出要复制到
this
的每个参数。理想情况下,
searchParams
将带有
null
值。但为了实现这一点,您需要编写一个中介函数,因此仍然需要列出所有属性,并将
未定义的
映射到代码中的某个位置
@Kunukn如果是这样的话,我建议保持你的接口/模型签名同步,或者一次性使用getter。我们仍然可以使用
对象。通过传递一个额外的对象来分配
,并明确说明边缘情况。见最新答案。是的,这是个问题。不过,我现在有另一个问题。如果在searchParams对象中没有指定属性,我需要将其分配给该对象,但为null。例如,在一次搜索中,可以在searchParams中设置maxPrice,但是在第二次搜索中,如果没有指定maxPrice,我需要它在这个对象上为null,而不是之前的值啊,如果需要将
未定义的
值转换为
null
,无法避免列出要复制到
this
的每个参数。理想情况下,
searchParams
将带有
null
值。但为了实现这一点,您需要编写一个中介函数,因此仍然需要列出所有属性,并将
未定义的
属性映射到代码中的某个位置
null