数组去重、伪数组和真数组的区别以及伪数组如何转换成真数组
1.数组去重
1) 利用数组的indexOf下标属性来查询。
如果找到一个 item,则返回 item 的第一次出现的位置。开始位置的索引为 0。
如果在数组中没找到指定元素则返回 -1。
function unique4(arr) {var newArr = []for (var i = 0; i < arr.length; i++) {if (newArr.indexOf(arr[i])===-1) {newArr.push(arr[i])}}return newArr}console.log(unique4([1, 1, 2, 3, 5, 3, 1, 5, 6, 7, 4]));// 结果是[1, 2, 3, 5, 6, 7, 4]
2)利用数组原型对象上的includes方法。
function unique5(arr) {var newArr = []for (var i = 0; i < arr.length; i++) {if (!newArr.includes(arr[i])) {newArr.push(arr[i])}}return newArr}console.log(unique5([1, 1, 2, 3, 5, 3, 1, 5, 6, 7, 4]));// 结果是[1, 2, 3, 5, 6, 7, 4]
3) 利用数组原型对象上的 forEach 和 includes方法
function unique7(arr) {let newArr = [];arr.forEach(item => {return newArr.includes(item) ? '' : newArr.push(item);});return newArr;}console.log(unique7([1, 1, 2, 3, 5, 3, 1, 5, 6, 7, 4]));// 结果是[1, 2, 3, 4, 5, 6, 7]
4) 利用 ES6的set 方法
function unique10(arr) {//Set数据结构,它类似于数组,其成员的值都是唯一的return Array.from(new Set(arr)); // 利用Array.from将Set结构转换成数组}console.log(unique10([1, 1, 2, 3, 5, 3, 1, 5, 6, 7, 4]));// 结果是[1, 2, 3, 5, 6, 7, 4]
2.伪数组和真数组的区别以及伪数组如何转换成真数组?
- 伪数组不具有数组的方法
- 真数组的长度是可变的,是内置的属性,伪数组的长度不可变,是自定义的一个属性
伪数组如何转换成真数组,
1. let newArray = [...伪数组] 扩展运算符
2. let newArr = Array.form(伪数组)