目前只想到四種類型的思路
第一種是用es6的Set方法或者filter方法
第二種是拿出當前項和后面的內(nèi)容比較 includes indexOf都行 這里注意點就是用i--的話可以避免數(shù)組塌陷 i > 0 因為最后一個已經(jīng)沒有比較價值了
第三種那一個對象把屬性存起來,然后判斷當前項是否存在對象中
第四種是鄰項對比,先排序,然后加標識符最后使用正則\1和replace來篩選
Set方法去重
let arr = [1,3,6,23,6,6,22,18,8,3,1,1]
function filterArr(arr) {
return [...new Set(arr)]
}
console.log(filterArr)
filter方法去重
let arr = [1,3,6,23,6,6,22,18,8,3,1,1]
function filterArr(arr) {
return arr.filter(function (x, index, self) {
return self.indexOf(x) === index;
});
}
console.log(filterArr)
includes方法去重
let arr = [1,3,6,23,6,6,22,18,8,3,1,1]
function filterArr(arr) {
for(let i = arr.length; i > 0; i--) {
let newArr = arr.slice(0, i - 1)
if(newArr.includes(arr[i])) {
arr.splice(i, 1)
}
}
return arr
}
console.log(filterArr)
indexOf方法去重
let arr = [1,3,6,23,6,6,22,18,8,3,1,1]
function filterArr(arr) {
for(let i = arr.length; i > 0; i--) {
let newArr = arr.slice(0, i - 1)
if(newArr.join().indexOf(arr[i]) > -1) {
arr.splice(i, 1)
}
}
return arr
}
console.log(filterArr)
創(chuàng)建對象屬性來存值
let arr = [1,3,6,23,6,6,22,18,8,3,1,1]
function filterArr(arr) {
let json = {}
for(let i = arr.length; i >= 0; i--) {
if(json[arr[i]]) {
arr.splice(i, 1)
}else {
json[arr[i]] = arr[i]
}
}
return arr
}
console.log(filterArr)
創(chuàng)建對象屬性來存值
let arr = [1,3,6,23,6,6,22,18,8,3,1,1]
function filterArr(arr) {
arr = arr.sort((a, b)=> {return a - b})
let reg = /(\d+,)\1*/g
let newArr = []
arr = arr.join() + ","
arr.replace(reg, function(value, $1){
newArr.push(parseFloat($1))
})
return newArr
}
console.log(filterArr)
目前想到的就這兒多了,歡迎各位科普