码迷,mamicode.com
首页 > 编程语言 > 详细

js数组部分实现

时间:2020-01-20 14:46:34      阅读:81      评论:0      收藏:0      [点我收藏+]

标签:inf   array   ice   turn   this   js数组   flat   result   选择   

1.扁平化数组

arr.flat(n),n表示扁平化的次数,为Infinity

    let arr = [1, [2, 3, [4, 5]]];
    arr.flat(Infinity)
    function flatten(arr) {
      while(arr.some(item=>Array.isArray(item))){
        arr=[].concat(...arr)
      }
      return arr
    }
    flatten(arr)

2.去重

运用扩展运算符和set

    let arr = [2, 3, 4, 5, 1, 2, 3, 4];
    let newArr = [...new Set(arr)];

 

    Array.prototype.distinct = function() {
      let arr = this,
        result = [],
        len = arr.length,
        i,
        j;
      for (i = 0; i < len; i++) {
        for (j = i + 1; j < len; j++) {
          if (arr[i] === arr[j]) {
            j = ++i;
          }
        }
        result.push(arr[i]);
      }
      return result;
    };

3.排序

arr.sort((a,b)=>a-b)

冒泡排序:相邻两两比较

    Array.prototype.bubleSort = function() {
      let arr = this,
        len = arr.length;
      for (let i = 1; i < len; i++) {
        for (let j = 0; j < len - i; j++) {
          if (arr[j] > arr[j + 1]) {
            [arr[j], arr[j + 1]] = [arr[j + 1], arr[j]];
          }
        }
      }
    };
    arr.bubleSort();

选择排序:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。

    Array.prototype.bubleSort = function() {
      let arr = this,
        len = arr.length;
      for (let i = 0; i < len; i++) {
        for (let j = 0; j < len; j++) {
          if (arr[j] > arr[i]) {
            [arr[i], arr[j]] = [arr[j], arr[i]];
          }
        }
      }
      return arr; //其实不用这句话,直接改动的就是原数组
    };
    arr.bubleSort()

虚插入实现方法 

    Array.prototype.resetSort = function() {
      let arr = this;
      let newArr = [];
      while (arr.length > 0) {
        newArr.push(Math.min(...arr))
        arr.splice(arr.indexOf(Math.min(...arr)), 1);
      }
      return newArr
    };
    let newArr=arr.resetSort()

  

 

js数组部分实现

标签:inf   array   ice   turn   this   js数组   flat   result   选择   

原文地址:https://www.cnblogs.com/Mijiujs/p/12217677.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!