题解 | 数组去重

数组去重

https://www.nowcoder.com/practice/7a26729a75ca4e5db49ea059b01305c9

const _deleteRepeat = array=>{
	return Array.from(new Set(array));
}

ES6箭头函数

  • 语法:
  • const functionName = parameter => { 函数体 }
  • 特性:
  • 简化函数声明,代替传统 function 关键字
  • 自动绑定词法作用域的 this
  • 适合简短的函数定义,提高代码可读性

Set数据结构(ES6)

  • 定义:
  • new Set([iterable]),创建一个值唯一的集合
  • 核心特性
  • 所有值都是唯一的,自动去重
  • 支持各种数据类型(基本类型+引用类型)
  • 按引用地址对引用类型去重
  • 常用方法:add() , delete() , has() , clear()
  • 应用场景:数组去重、数据唯一性验证、集合运算

Array.from()方法(ES6新增)

  • 语法:
  • Array.from(arrayLike [ , mapFn[ , thisArg ] ])
  • 功能:将类数组对象或可迭代对象转换为真正的数组
  • 适用对象:
  • Set,Map等可迭代对象
  • DOM NodeList集合
  • 字符串
  • 带有length属性的对象
  • 应用场景:集合转数组类数组转数组字符串转数组

数组去重实现

  • 核心原理:利用Set数据结构的唯一性特性
  • 实现方式:
  • Array.from(new Set(array))
  • [...new Set(array)]
  • 性能优势:时间复杂度为O(n),比传统双重循环效率更高
  • 局限性:引用类型按地址去重而不是值比较

const 关键字

  • 作用:声明只读常量,值不可重新赋值
  • 特性
  • 块级作用域
  • 必须初始化
  • 常量引用不可变,但引用的对象/数组内容可变
  • 应用场景:声明函数,配置项,固定常量

代码优化与拓展

const _deleteRepeat = array =>{
	if(!Array.isArray(array)){
		throw new Error('参数必须是数组');
	}
	return Array.from(new Set(array));
}

const deepDeleteRepeat = array => {
	const seen = new Map();
  return array.filter(item => {
  	const key = typeof iter === 'object' ? JSON.stringify(item) : item;
	return !seen.has(key) && seen.set(key,true);
  });
}

全部评论

相关推荐

LuminousZJ:不行,最后还是要看学信网的,这点不能伪装,也骗不过人家,得不偿失
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务