【问题标题】:Explanation on destructuring解构解释
【发布时间】:2016-09-03 07:42:33
【问题描述】:

关于codewars,有如下问题:

说明

西郊槌球俱乐部有两类会员,高级会员和公开会员。他们希望您提供一份申请表的帮助,该申请表将告诉潜在成员他们将被放置在哪个类别。

要成为资深会员,会员必须年满 55 岁且差点大于 7。在这个槌球俱乐部,差点范围从 -2 到 +26;球员越好,差点越低。

输入

输入将由一个包含两个项目的列表组成。每个列表都包含单个潜在成员的信息。信息由一个整数表示该人的年龄和一个整数表示该人的残障。

示例输入

[[18, 20],[45, 2],[61, 12],[37, 6],[21, 21],[78, 9]]

输出

输出将包含一个字符串值列表(在 Haskell 中:Open 或 Senior),说明相应的成员将被放置在 Senior 或 Open 类别中。

示例输出

[“公开”、“公开”、“高级”、“公开”、“公开”、“高级”]

一个答案很简单:

function openOrSenior(data) {
    return data.map(([age, handicap]) => (age > 54 && handicap > 7) ? 'Senior' : 'Open');
}

它利用了解构,虽然我已经阅读过它,但我并没有真正了解它是如何工作的。那么问题来了:这里发生了什么?这是如何工作的(用最简单的术语来说)?

【问题讨论】:

  • 究竟有什么不清楚的地方?
  • 参数假设为元组(双元素数组),第一个元素赋值给age,第二个元素赋值给handicap
  • 尚不清楚它是如何准确地将其映射到年龄和障碍的。它在做什么? Map 接受一个函数,所以本质上我们将 function([age, handicap]) { } 传递给 map 函数。 map 作用于数据数组,对于每个元素,它本身就是一个数组。它只是将成员数组中的内容分配给变量吗?
  • 解构就是这个意思。

标签: javascript


【解决方案1】:
function openOrSenior(data) {
    return data.map(([age, handicap]) => (age > 54 && handicap > 7) ? 'Senior' : 'Open');
                      ^^^^^^^^^^^^^
                      destructuring
}

这是一个简单的地图实现。唯一值得一提的是[age, handicap]首先被分配给[18,20]的解构部分,这意味着age被分配给18handicap被分配给20

【讨论】:

  • 就这么简单吧?我想我误读了文档中的某些部分,与处理对象相比,处理数组时有不同的表示法,即使用左侧的数组解构使用 [],使用左侧的对象解构使用 {}。我忽略了将 [] 与解构数组一起使用,当我看到它时它没有点击。现在知道了,太棒了!
猜你喜欢
  • 1970-01-01
  • 2017-05-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多