递归使用filter和map 过滤返回新的数组

递归使用filter和map 过滤返回新的数组

filterArray (arr) {
      return arr.filter(item => {
        	return item.status !== 2. // 对应的过滤表达式
      }).map(item => {
        	item = Object.assign({}, item)
        	if (item.child) {
          		item.child = this.filterArray(item.child)
        	}
        	return item
      })
 },
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是7个js数组去重的方法: 方法一:使用Set ```javascript const arr = [1, 2, 3, 1, 2, 3]; const uniqueArr = [...new Set(arr)]; console.log(uniqueArr); // [1, 2, 3] ``` 解释:Set是ES6中增的数据结构,它可以用来存储任意类型的唯一值。使用Set去重是最简单的方法,将数组转化为Set,然后再转回数组即可。 方法二:使用indexOf ```javascript const arr = [1, 2, 3, 1, 2, 3]; const uniqueArr = []; arr.forEach(item => { if (uniqueArr.indexOf(item) === -1) { uniqueArr.push(item); } }); console.log(uniqueArr); // [1, 2, 3] ``` 解释:使用indexOf方法判断元素是否已经存在于数组中,不存在则将该元素推入数组。 方法三:使用includes ```javascript const arr = [1, 2, 3, 1, 2, 3]; const uniqueArr = []; arr.forEach(item => { if (!uniqueArr.includes(item)) { uniqueArr.push(item); } }); console.log(uniqueArr); // [1, 2, 3] ``` 解释:includes方法也可以判断元素是否已经存在于数组中,不存在则将该元素推入数组。 方法四:使用filter ```javascript const arr = [1, 2, 3, 1, 2, 3]; const uniqueArr = arr.filter((item, index) => { return arr.indexOf(item) === index; }); console.log(uniqueArr); // [1, 2, 3] ``` 解释:filter方法可以通过回调函数过滤数组中的元素,只保留符合条件的元素。在这里,利用indexOf判断元素是否是第一次出现,是则保留。 方法五:使用reduce ```javascript const arr = [1, 2, 3, 1, 2, 3]; const uniqueArr = arr.reduce((prev, cur) => { if (!prev.includes(cur)) { prev.push(cur); } return prev; }, []); console.log(uniqueArr); // [1, 2, 3] ``` 解释:reduce方法可以将一个数组转化为一个值,利用它也可以实现去重。在这里,prev表示数组,cur表示当前元素,如果数组中不存在当前元素,则将其推入数组。 方法六:使用Map ```javascript const arr = [1, 2, 3, 1, 2, 3]; const uniqueArr = []; const map = new Map(); arr.forEach(item => { if (!map.has(item)) { map.set(item, true); uniqueArr.push(item); } }); console.log(uniqueArr); // [1, 2, 3] ``` 解释:利用Map数据结构的特性,将元素作为键存储,值为true。如果元素已经存在于Map中,则跳过;否则将其推入数组。 方法七:使用归 ```javascript const arr = [1, 2, 3, 1, 2, 3]; function unique(arr) { if (arr.length === 1) { return arr; } const first = arr[0]; const rest = arr.slice(1); return unique(rest.filter(item => item !== first)).concat(first); } const uniqueArr = unique(arr); console.log(uniqueArr); // [1, 2, 3] ``` 解释:归是一种非常强大的方法,虽然不如其他方法简洁,但能够解决各种问题。在这里,归调用本身,直到数组长度为1,然后将结果拼接起来。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值