【问题标题】:Extracting properties out of an object natively以本机方式从对象中提取属性
【发布时间】:2018-04-18 03:25:53
【问题描述】:

我使用underscore.js 库从对象中提取属性。有没有更原生的 JS 方式来完成同样的事情:

var fullObject = {'name': 'Jack', 'age': 39, 'device': 'tablet', 'team': 'Red'}
const {name, device, team} = fullObject
console.log(name, device, team) // Jack tablet Red

有没有办法通过解构来创建一个新对象?

我想将namedeviceteam 的值分配给一个新对象。

目前我这样做:

const {name, device, team} = fullObject
const newObject = {name, device, team}
console.log(newObject) // { name: 'jack', device: 'tablet', team: 'red' }

有没有更好的方法来做到这一点?

【问题讨论】:

  • 很确定没有办法用 DRY 做到这一点,不幸的是,你必须编写自己的(短)函数

标签: javascript node.js ecmascript-6


【解决方案1】:

如果你在几个地方提取一个特定的子对象并且你希望它更干燥,你可以编写一个柯里化函数来接受要选择的键,然后返回另一个函数来接受一个对象来提取它们。

用法见下文:

const pick = (...keys) => (obj) => keys.reduce((acc, k) => (acc[k] = obj[k], acc), {})
const nameDeviceTeam = pick('name', 'device', 'team')

const fullObject = { name: 'Jack', age: 39, device: 'tablet', team: 'red' }
const newObject = nameDeviceTeam(fullObject)

console.log(newObject)

【讨论】:

    猜你喜欢
    • 2020-04-07
    • 2020-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-10
    • 2021-06-17
    • 2021-10-02
    相关资源
    最近更新 更多