方法一 利用两个for循环
console.log('------' + '方法一');
var srr = [1, 2, 2, 2, 33, 2, 'hello', 'hello']
function unique1 (arr) {
// 第一层for循环控制第一个数
for (let i = 0; i < srr.length; i++) {
// 第二层循环控制第二个数
for (let j = i + 1; j < srr.length; j++) {
// 判断前后是否相等
if (srr[j] === srr[i]) {
srr.splice(j, 1);
j--//相当于抵消了j++,避免多个重复元素相连时忽略掉某一个
}
}
}
}
unique1(srr);
console.log(srr);
方法二 利用第三方库 lodash
注意:1.要初始化项目 npm init
2.安装lodash npm install lodash --save
var _ = require('lodash');
var srr = [1, 2, 2, 2, 33, 2, 'hello', 'hello']
console.log(_.uniq(srr));
方法三 利用数组API indexOf
console.log('------' + '方法三');
function unique3 (arr) {
let newArr = [];
for (let i = 0; i < srr.length; i++) {
if (newArr.lastIndexOf(srr[i]) === -1) {
newArr.push(srr[i])
}
}
return newArr
}
console.log(unique3(srr));
方法四 利用includes
console.log('------' + '方法四');
function unique4 (arr) {
var newArr4 = []
for (let i = 0; i < srr.length; i++) {
if (!newArr4.includes(srr[i])) {
newArr4.push(srr[i])
}
}
return newArr4
}
console.log(unique4(srr));
方法五 利用forEach+indexOf
console.log('------' + '方法五');
function unique5 (arr) {
var newArr5 = []
srr.forEach(function (item) {
if (newArr5.indexOf(item == -1)) {
newArr5.push(item)
}
})
return newArr5
}
console.log(unique5(srr));
方法六 filter+indexOf/includes
console.log('------' + '方法六');
function unique6 (arr) {
let newArr6 = []
return srr.filter(function (item) {
return newArr6.includes(item) ? '' : newArr6.push(item)
})
// return newArr6
}
console.log(unique6(srr));
方法七 set
console.log('------' + '方法七');
var sque = new Set(srr)
console.log(sque);
console.log(Array.from(sque));