javascript - 将嵌套对象解构为函数参数

标签 javascript ecmascript-6 destructuring

在 ES6 中我们可以做:

let myFunc = ({name}) => {
  console.log(name)
}

myFunc({name:'fred'}) // => logs 'fred'

但是对于这样的嵌套属性我该如何做:

myFunc({event:{target:{name:'fred'}}}) // => I want it to log 'fred'

myFunc 应该是什么样子才能记录“fred”?

我无法更改传入的对象。我希望使用解构来实现此目的或其他一些合适的 ES6 方法。

最佳答案

你可以简单地这样做:

const myFunc = ({event: {target: {name}}}) => {
  console.log(name)
}

myFunc({event: {target: {name: 'fred'}}})
.as-console-wrapper { max-height: 100% !important; top: 0; }

这是另一个实现,两个都在参数中,但第二个完全是可选的:

const myFunc = (
      {name: name},
      {event: {target: {name: eventTargetName = ''} = ''} = ''} = ''
    ) => {
      console.log(name, eventTargetName)
    }

myFunc({name:'fred'})
myFunc({name:'papi'}, {event: {target: {name: 'fredo'}}})
.as-console-wrapper { max-height: 100% !important; top: 0; }

关于javascript - 将嵌套对象解构为函数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44503409/

相关文章:

javascript - 通过数组中的下一个元素更改变量值

javascript - 自动调整表格中的电话号码格式

javascript - 变量上的字符串插值

javascript - 产生了一个不能被视为 promise 的值(value)

javascript - TypeScript:SyntaxError:控制台中出现 "Unexpected token"消息

clojure - 在 clojure 中解构 Maps——未使用的键

javascript - 如何使用 react-native 绘制梯形/梯形?

javascript - 使用 AngularJS 获取没有 id 或 class 属性的子元素

angular - 如何在 Angular 应用程序中包含额外的 ES6 源代码

vector - 如何在不切片的情况下解构向量?