js数组去重与排序

数组是一维纯数字去重

arr1=[15,5,1,2,6,5,6,8,10,1] arr2=[]
思路: 对数组进行for循环遍历,判断新数组arr2里是否存在每一项,(indexOf()=-1或includes()=false)不存在把这一项加到新数组里。

for(i=0;i<arr1.length;i++){
    if(arr2.indexOf(arr1[i])=== -1 ){
        arr2.push(arr1[i])
    }
}

数组排序

const arr = [1,27,16,34,8,100,78,82,19,48,95,63];
1.sort(面试不允许)
sort将数组变为字符串排序,默认会按ASCII字符排
arr.sort = [1, 100, 16, 19, 27, 34, 48, 63, 78, 8, 82, 95]
也可以比较函数作为sort参数,排序规则
arr.sort( (item1,item2) => item1- item2 ) = [1, 8, 16, 19, 27, 34, 48, 63, 78, 82, 95, 100]
2.选择排序
思路:第一次循环找下标最大或最小的下标值,把这项放到最后面。原来最后面的那个值放到他的位置(替换)
3.冒泡排序
思路:对相邻的俩个值进行对比,俩个for循环嵌套,里面的for循环找一个最大值,外面的for循环通过数组的长度决定执行几次里边的循环。
俩个数怎么互换位置,通过一个第三值。

 for(let i = 0;i < arr.length;i++){
    for(let j = 0;j <arr.length-i;j++){
        if(arr[j]>arr[j+1]){
           let t = arr[j];
          arr[j] = arr[j+1];
           arr[j+1] = t;
       }
    }

4.快速排序
思路:从数组选一个基准,(第一项)

function sort(arr){
  //当左or右数组为1个值时结束
  if(arr.length <= 1){
    return arr
}
  let 基准 = arr[0];
  const left= []
  const right= []
  for(let i = 1; i < arr.length; i++){
    if(arr[i]>基准 ){
       //放右边
        right.push(arr[i])
      }else{
      //放左边
      left.push(arr[i])
      }
  }
  //递归 sort(left)  sort(right)
  return [...sort(left),基准,...[sort(right)]
}
console.log( sort(arr));
posted @   梧桐树211  阅读(242)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示
主题色彩