箭头函数中的参数结构, elements.map(({ "length": lengthFooBArX }) => lengthFooBArX);这种写法是如何起作用的

MDN Web文档关于箭头函数的解释中的如下写法:

({ "length": lengthFooBArX }) => lengthFooBArX是如何起作用的很多小伙伴不理解,本文作解释。

var elements = [
  'Hydrogen',
  'Helium',
  'Lithium',
  'Beryllium'
];

elements.map(function(element) { 
  return element.length; 
}); // 返回数组:[8, 6, 7, 9]

// 上面的普通函数可以改写成如下的箭头函数
elements.map((element) => {
  return element.length;
}); // [8, 6, 7, 9]

// 当箭头函数只有一个参数时,可以省略参数的圆括号
elements.map(element => {
 return element.length;
}); // [8, 6, 7, 9]

// 当箭头函数的函数体只有一个 `return` 语句时,可以省略 `return` 关键字和方法体的花括号
elements.map(element => element.length); // [8, 6, 7, 9]

// 在这个例子中,因为我们只需要 `length` 属性,所以可以使用参数解构
// 需要注意的是字符串 `&#
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您可以使用数组的 `filter()` 方法来筛选出 `treeLevel=1` 的元素,然后使用 `map()` 方法对这些元素进行处理。在 `map()` 方法,您可以使用 `filter()` 方法再次筛选出 `treeLevel=2` 且 `parentCode` 等于当前元素的 `companyCode` 的元素,最后将这些元素添加到当前元素的一个新属性,例如 `children`。以下是一种可能的实现方式: ``` this.company = []; this.child = []; this.$u.api.serviceArea.getserviceArea().then(res => { this.list = this.list.concat(res); // Filter out treeLevel=1 elements const companies1 = this.list.filter(item => item.treeLevel === 1); // Map through the treeLevel=1 elements this.company = companies1.map(company1 => { // Filter out treeLevel=2 elements with matching parentCode const children = this.list.filter(item => item.treeLevel === 2 && item.parentCode === company1.companyCode); // Add children to the company1 object as a new property return { ...company1, children }; }); // Filter out all treeLevel=2 elements const companies2 = this.list.filter(item => item.treeLevel === 2); // Group treeLevel=2 elements by parentCode const groups = [...new Set(companies2.map(item => item.parentCode))]; const newArr = groups.map(parentCode => { const children = companies2.filter(item => item.parentCode === parentCode); children.forEach(child => { let parent = companies2.find(item => item.companyCode === parentCode); child.parentName = parent.companyName; }); return children; }); this.child = newArr; }); ``` 在上面的代码,我们首先使用 `filter()` 方法筛选出 `treeLevel=1` 的元素,并将结果存储在 `companies1` 数组。然后使用 `map()` 方法对 `companies1` 数组的每个元素进行处理,将符合条件的 `treeLevel=2` 的元素添加到一个新的 `children` 属性,并将结果存储在 `this.company` 数组。 最后,我们使用 `filter()` 方法筛选出所有的 `treeLevel=2` 的元素,并使用 `map()` 方法对这些元素进行分组,将每个元素的 `parentCode` 属性作为键,将符合条件的元素分组到一个新的数组。在分组过程,我们还使用 `forEach()` 方法将每个元素的 `parentName` 属性设置为其父元素的 `companyName`。最终的结果存储在 `this.child` 数组

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值