Set
let arr = [...new Set(array)]
splice
splice 操作元素的话 性能不太好 当前项一旦删除 后面项索引都发生改变
for (let i = 0; i < array.length-1; i++) {
let currentItem = array[i],
sliceArr = array.slice(i+1);
if(sliceArr.indexOf(currentItem) > -1){
array.splice(i+1, 1)
//此时会有数据塌陷 要i--
i--
}
}
改进方式:先把重复的元素改为null 最后统一处理
for (let i = 0; i < array.length-1; i++) {
let currentItem = array[i],
sliceArr = array.slice(i+1);
if(sliceArr.indexOf(currentItem) > -1){
array[i+1] = null
}
}
array = array.filter(item => item!==null)
赋值一个新数组
let newArray = [...array]
for (let i = 0; i < array.length; i++) {
let currentItem = array[i],
sliceArr = array.slice(i+1);
if(sliceArr.indexOf(currentItem) > -1){
newArray.splice(i+1, 1)
}
}
console.log(newArray);
创建一个新的空数组
let newArray = []
for (let i = 0; i < array.length; i++) {
let currentItem = array[i],
sliceArr = array.slice(i+1);
if(sliceArr.indexOf(currentItem) === -1){
newArray.push(currentItem)
}
}
用最后一项补位
for (let i = 0; i < array.length-1; i++) {
let currentItem = array[i],
sliceArr = array.slice(i+1);
if(sliceArr.indexOf(currentItem) > -1){
array[i] = array[array.length - 1]
array.length --
i --
}
}
对象中的健值对
拿数组中每一项向新容器中存储 如果已经存储过了 把当前项干掉
let obj = {}
for (let i = 0; i < array.length; i++) {
const item = array[i];
if(typeof obj[item] !== 'undefined'){
array[i] = array[array.length - 1]
array.length --
i--
continue
}
obj[item] = item
}
先排序再相邻比较(基于正则)
array.sort((a, b) => a-b) // 升序
array = array.join('@') + '@'
let reg = /(\d+@)\1*/g,
arr = []
array.replace(reg, (val, group) => {
console.log(val,'------',group);
/* 打印信息
1@ ------ 1@
2@2@ ------ 2@
3@ ------ 3@
4@4@ ------ 4@
5@ ------ 5@
6@6@ ------ 6@
7@ ------ 7@
8@ ------ 8@
9@9@ ------ 9@
*/
arr.push(Number(group.slice(0, group.length-1)))
// 或者 arr.push(parseFloat(group))
})