美文网首页
数组去重

数组去重

作者: 不忘初心_6b23 | 来源:发表于2020-04-08 16:46 被阅读0次

数组相关操作

1.数组去重

(1)indexOf()去重

function unique(arr){
   if (!Array.isArray(arr)) {
       console.log('type error!')
       return
   }
       let tmp = []
       arr.forEach((itm,idx) =>{
       if(tmp.indexOf(arr[idx]) === -1){
           tmp.push(itm)
       }
   })
     return tmp
}

(2) 对象属性去重(推荐,因为只需要遍历一遍)

function unique(arr){
    if (!Array.isArray(arr)) {
        console.log('type error!')
        return
    }
    let obj = {}
    let tmp = []
    arr.forEach(itm =>{
        if(!obj[itm]){
            tmp.push(itm)
            obj[itm] = true
        }
    })
    return tmp
}

(3)set与解构赋值去重(推荐,便利,快速)

function unique(arr){
    if (!Array.isArray(arr)) {
        console.log('type error!')
        return
    }
      return [...new Set(arr)]
}

(4)set与Array.from(推荐,便利,快速)

function unique(arr){
    if (!Array.isArray(arr)) {
        console.log('type error!')
        return
    }
      return Array.from(new Set(arr))
}
2.有一个长度为 100 的数组,如何从中随机挑选 10 个不重复的元素,组成一个新的数组?
function random(len, start, end) {
  var arr = [];
  function _inner(start, end) {
    return parseInt(Math.random() * (end - start) + start)
  }
  while (arr.length < len) {
    var num = _inner(start, end);
    if (arr.indexOf(num) == -1) {
      arr.push(num);
    }
  }
    return arr;
}
3.数组排序

(1)冒泡排序

unction bubbleSort(arr) {  
    for(let i = 0,l=arr.length;i<l-1;i++) {
        for(let j = i+1;j<l;j++) {
          if(arr[i]>arr[j]) {
                let tem = arr[i];
                arr[i] = arr[j];
                arr[j] = tem;
            }
        }
    }
    return arr;
}

(2)选择排序

function quickSort(arr) {
    if(arr.length<=1) {
        return arr;
    }
    let leftArr = [];
    let rightArr = [];
    let q = arr[0];
    for(let i = 1,l=arr.length; i<l; i++) {
        if(arr[i]>q) {
            rightArr.push(arr[i]);
        }else{
            leftArr.push(arr[i]);
        }
    }
    return [].concat(quickSort(leftArr),[q],quickSort(rightArr));
}
4.判断是数组
function isArray(arg) {
    if (typeof arg === 'object') {
        return Object.prototype.toString.call(arg) === '[object Array]';
    }
    return false;
}
5.判断是对象
function isObject(arg) {
    if (typeof arg === 'object') {
        return Object.prototype.toString.call(arg) === '[object Object]';
    }
    return false;
}
typeof obj === Object

// 根据typeof判断对象也不太准确
表达式                       返回值
typeof undefined           'undefined'
typeof null                'object'
typeof true                'boolean'
typeof 123                 'number'
typeof "abc"               'string'
typeof function() {}       'function'
typeof {}                  'object'
typeof []                  'object'

相关文章

  • Array集结号

    实现数组去重的几种方法 数组去重一 数组去重二 利用数组indexof+push实现数组去重 数组去重三 利用对象...

  • 实现数组去重有哪些方式

    简单的数组去重 数组对象去重

  • 数组去重的四种方法

    利用双for循环去重 利用对象数组去重 利用对象数组去重并且记录重复次数 通过创建一个新数组进行数组去重

  • js数组去重、对象数组去重

    普通数组去重 一、普通数组去重 方法一:遍历数组法 方法二:排序法 方法三:对象法 对象数组去重 方法一:将对象数...

  • javascript数组去重,数组对象去重

    利用Reduce去重 function unique(arr) {var obj = {};arr = arr.r...

  • js:数组去重

    数组去重的常见写法: 数组去重封装成方法: es6的数组去重(Array.from):

  • ES6数组去重

    普通数组去重 方法1 方法2 对象数组去重

  • js reduce去重用法

    reduce不仅仅可以数据累加,还可以实现去重效果。 重复次数计算 数组去重 数组对象去重,转为数组 对象去重

  • 数组去重

    传统方法 ES6 扩展 传统方法 最后再写到 Array.prototype 原型中

  • 数组去重

    老题了。。虽然网上一搜一大堆,还是自己想了想,自己动笔写了几种。

网友评论

      本文标题:数组去重

      本文链接:https://www.haomeiwen.com/subject/fobtmhtx.html