let arr = [1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 5, 4, 3, 7, 8];
new Set()
Array.from() — 类数组转换为真数组
new Set() — 存储任何类型的唯一值
let newArr = Array.from( new Set( arr ) );console.log( newArr );
includes()
includes — 一个数组是否包含一个指定的值
let newArr = [];for ( let i = 0; i < arr.length; i++) {// 当 newArr 中不包含 arr 中的元素时, 就将该元素push到newArr中!newArr.includes( arr[i] ) ? newArr.push( arr[i] ) : [];}console.log( newArr );
indexOf()
findexOf — 返回元素首次在数组中出现的的索引位置
let newArr = [];for (let i = 0; i < arr.length; i++) {// 新数组中是否存在当前元素,如果不存在,则push进去if (newArr.indexOf( arr[i] ) === -1) {newArr.push( arr[i] )}}console.log( newArr );
filter()
filter — 返回一个新数组,内容包括回调函数中满足条件的值
findexOf — 返回元素首次在数组中出现的的索引位置
let newArr = arr.filter((value, index, currentArr) => {// 查找当前数组中 当前值 的索引是否等于 当前索引return currentArr.indexOf(value) === index;});console.log( newArr );
for + for + splice()
splice — 删除或替换元素中的值,改变原数组
for (let i = 0; i < arr.length; i++) {for (let j = i + 1; j < arr.length; j++) {// 数组第一个元素 是否跟 后面的元素相等if (arr[i] === arr[j]) {// 相等后, 就从当前位置开始,删除一个arr.splice(j, 1);j--;}}}
对象数组去重 reduce
// 对象数组去重let obj = {}let newArray = person.reduce((prev, item) => {obj[item.name] ? "" : obj[item.name] = true && prev.push(item)return prev}, [])
