数组操作,冒泡排序、去重、出现次数、数组降维

91 阅读1分钟

冒泡排序

  let bubblingArr = [1, 2, 5, 3, 6, 7, 4, 3, 5, 7];
 function fn1(bubblingArr) {
    for (let t = 0; t < bubblingArr.length-1; t++) {  
      for (let t2 = t + 1; t2 < bubblingArr.length; t2++) { 
        if (bubblingArr[t] < bubblingArr[t2]) { 
          //降序把 >改为<
          [ bubblingArr[t], bubblingArr[t2]]= [ bubblingArr[t2], bubblingArr[t]]
        }
      }
    }
    return bubblingArr;
  }
  console.log(fn1(bubblingArr));
  
  

去重

方法一:
  let arr = [1, 2, 5, 3, 6, 7, 4, 3, 5, 7];
  function fn1(arr) {
    let setAr = new Set(arr);
    return [...setAr];
  }
console.log(fn1(arr));

方法二:
  function fn1(arr, arr2) {
    return arr.filter(function (v, i, arrs) {
      if (!arrs.slice(0, i).includes(v)) {
        return true;
      } 
    });
  }
  console.log(fn1(arr));
  
  
  方法三:
  let arr = [1, 2, 5, 3, 6, 7, 4, 3, 5, 7];
  function fn1(arr, arr2 = []) {
    for (let t = 0; t < arr.length; t++) {
      if (!arr2.includes(arr[t])) {
        arr2.push(arr[t]);
      }
    }
    return arr2;
  }
  console.log(fn1(arr));
结果:
[1, 2, 5, 3, 6, 7, 4]

计算出现的数量

方法一:
  let arr = [1, 2, 5, 3, 6, 7, 4, 3, 5, 7];
  function fn1(arr, arr2 = {}) {
    for (let t = 0; t < arr.length; t++) {
      if (arr2.hasOwnProperty(arr[t])) {
        arr2[arr[t]]++;
      } else {
        arr2[arr[t]] = 1;
      }
    }
    return arr2;
  }
  console.log(fn1(arr));
  
方法二:
  function fn1(arr) {
    return arr.reduce((pre, v, i, arrAll) => {
      if (v in pre) {
        pre[v]++;
      } else {
        pre[v] = 1;
      }
      return pre;
    }, {});
  }
  console.log(fn1(arr));

数组扁平化

方式一 flat属性降为:
  let arr = [1, [2, [5, 3]], [6, [7, [4, 3], 5]], 7];
  function fn1(arr) {
    return arr.flat(2);
  }
  
方式二 降为并去重:
function fn1(arr, arr2 = []) {
    for (let t = 0; t < arr.length; t++) {
      Array.isArray(arr[t]) ? fn1(arr[t], arr2) : arr2.includes(arr[t]) ? null : arr2.push(arr[t]);
    }
    return arr2;
  }
  console.log(fn1(arr));
  
  方式三 reduce:
  function fn1(arr, arr2 = []) {
    return arr.reduce((pre, v, i, arrAll) => {
      return pre.concat(Array.isArray(v) ? fn1(v) : v);
    }, []);
  }
  console.log(fn1(arr));