数组去重
- 利用Set方法可以去重,用Array.from返回数组
var array = [1,2,1,1,’1’]
function unique(array){
return Array.from(new Set(array))
}
console.log(unique(array)) //[1,2,’1’]
甚至可以再简化下用 (拓展运算符返回数组):
function unique(array) {
return [...new Set(array)];
}
还可以再简化下:
var unique = (a) => [...new Set(a)]
2.利用Map 方法去重
function unique (arr) {
const seen = new Map()
return arr.filter( (a) => !seen.has(a) && seen.set(a, 1) )
}
3. 双重循环+splice
function a(nums){
for (var i=0 ;i<nums.length;i++){
for (var j=i+1 ; j<nums.length;j++){
if(nums[i] === nums[j]){
nums.splice(j,1)
j--
}
}
}
return nums
}
4. 单层循环+splice
function a(nums){
let cur = nums[0]
for (var i=1 ;i<nums.length;){
if (nums[i] === cur){
nums.splice(i,1)
}else{
cur = nums[i++]
}
}
return nums
}
5. 单层循环+indexof去重
function a(nums){
let nums2 =[]
for(let i=0;i<nums.length;i++){
if (nums2.indexOf(nums[i]) === -1){
nums2.push(nums[i])
}
}
return nums2
}
6.两个数组合并去重
let a= [1, 1, 2, 3, 4]
let b= [1, 2, 5, 4,]
function uniqueArr(arr1,arr2) {
//合并两个数组
arr1.push(...arr2)//或者arr1 = [...arr1,...arr2]
//去重
let arr3 = Array.from(new Set(arr1))//let arr3 = [...new Set(arr1)]
console.log(arr3)
}
uniqueArr(a,b)
数组其他操作
7.数组的元素上移和下移动
splice() 方法可删除从 index 处开始的零个或多个元素,并且用参数列表中声明的一个或多个值来替换那些被删除的元素。
var Data=[1,2,3,4];
var index=4;
// 上移动一个
function upGo(Data,index){
if(index!=0){
Data[index] = Data.splice(index-1, 1, Data[index])[0];
}else{
Data.push(Data.shift());
}
}
// 下移动一个
function downGo(Data,index) {
if(index!=Data.length-1){
Data[index] = Data.splice(index+1, 1, Data[index])[0];
}else{
Data.unshift( Data.splice(index,1)[0]);
}
}
8.冒泡排序
相邻的两个元素相比较,前一个元素大于后一个元素则往后移
var a = [12,3,4,13,10,16,1]
function up(arr){
let leng = arr.length
for(var i=0;i<leng;i++){
for(var j=0;j<leng-i;j++){
if(arr[j]>arr[j+1]){
let A = arr[j];
arr[j] = arr[j+1];
arr[j+1] = A ;
}
}
}
return arr
}
console.log(up(a))