标签:arr return log newArr 数组 console 方法
一、设定原数组
const arr = [22, 22, 'ture', 'ture', false, false, undefined, undefined, null, null, NaN, NaN, 'NaN', 0, 0, 'a', 'a', 15, 15, true, true, {}, {}]
console.log('原数组', arr);
二、去重方法
1.ES6的set去重 Array.from(new Set(数组)) ,无法去空对象{},可以去NaN
function unique() {
return Array.from(new Set(arr))
}
console.log('set去重', unique());
2.双重循环嵌套,使用spilce,无法去空对象{}和NaN
function unique1(arr) {
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--
}
}
}
return arr
}
console.log('双重循环splice去重', unique1(arr));
3.indexOf去重,无法去{}和NaN
function unique2(arr) {
if (!Array.isArray(arr)) {
return console.log('传入的不是数组');
}
let newArr = []
for (let i = 0; i < arr.length; i++) {
if (newArr.indexOf(arr[i] === -1))//如果newArr数组中没有,则添加
{
newArr.push(arr[i])
}
}
return newArr
}
console.log('indexOf去重', unique2(arr));
4.利用sort()去重,无法去重{}对象,NaN,undefined消失
function unique3(arr) {
if (!Array.isArray(arr)) {
return console.log('传入的不是数组');
}
arr = arr.sort()
let newArr = [arr[0]]
for (let i = 1; i < arr.length; i++) {
if (arr[i] !== arr[i + 1]) {
newArr.push(arr[i])
}
}
return newArr
}
console.log('sort去重', unique3(arr));
5.利用includes,即数组是否包含该值,无法去{}对象,但可以去NaN
function unique4(arr) {
if (!Array.isArray(arr)) {
return console.log('传入的不是数组');
}
let newArr = []
for (let i = 0; i < arr.length; i++) {
if (!newArr.includes(arr[i])) {
newArr.push(arr[i])
}
}
return newArr
}
console.log('includes去重', unique4(arr));
6.hasOwnProperty,检测对象是否包含某个值,可全部去重
function unique5(arr) {
let obj = {}
function f1(item, index, arr) {
return obj.hasOwnProperty(typeof item + item) ? false : (obj[typeof item + item] = true)
}
return arr.filter(f1)
}
console.log('对象的hasOwnProperty去重', unique5(arr));
7.利用filter+indexOf,无法去重{},NaN消失
function unique6(arr) {
if (!Array.isArray(arr)) {
return '传入的不是数组'
}
//利用filter返回一个新的数组,新数组的元素为符合函数标准的元素,需要return
return arr.filter(function (item, index, arr) {
//从数组的第0位开始查找目标元素,如果与当前索引值相同,即为不重复,返回该值于新数组中
return arr.indexOf(item, 0) === index
})
}
console.log('filter+indexOf去重', unique6(arr));
标签:arr,
return,
log,
newArr,
数组,
console,
方法
From: https://www.cnblogs.com/jackdongdong/p/16839346.html