前端基础——数组的方法二

判断是否是数组的方法

  • Object.prototype.toString.call(arr);
  • arr instanceof Array;
  • arr.constructor === Array;
  • Array.isArray(arr);
	var arr = [1, 3];
    var obj = {};
    console.log(Object.prototype.toString.call(arr));
    console.log(arr instanceof Array);
    console.log(arr.constructor === Array);
    console.log(Array.isArray(arr));

    console.log(Object.prototype.toString.call(obj));
    console.log(obj instanceof Array);
    console.log(obj.constructor === Array);
    console.log(Array.isArray(obj));

数组去重

测试:

    let arr = [1, 3, 5, 2, 3, 7, 6, 9, 2];
    console.time('dedup');
    let dedupArr = arr.dedup();
    console.log(dedupArr);
    console.timeEnd('dedup');

第一种方法:

    Array.prototype.dedup = function () {
      return [...new Set(this)]
    }

第二种方法:

    Array.prototype.dedup = function () {
      let arr = [];
      let obj = {};
      this.forEach(item => {
        if (!obj[item]) {
          arr.push(item);
          obj[item] = 1;
        }
      })
      return arr;
    }

第三种方法

    Array.prototype.dedup = function () {
      let arr = [];
      this.forEach(item => {
        if (arr.indexOf(item) === -1) {
          arr.push(item);
        }
      })
      return arr;
    }

第四种方法

    Array.prototype.dedup = function () {
      let arr = [];
      this.forEach((item, index) => {
        if (this.indexOf(item) === index) {
          arr.push(item);
        }
      })
      return arr;
    }

由于数组写的比较简单,所以用时差不多。

猜你喜欢

转载自blog.csdn.net/qq_42303885/article/details/85336889