美文网首页
javascript三种数组去重和三种随机排序方法,面试必考题

javascript三种数组去重和三种随机排序方法,面试必考题

作者: Masami_9e88 | 来源:发表于2018-09-10 12:01 被阅读0次

     数组去重和随机排序是面试常考的知识点,掌握这两种方法对于自己的面试有会有一定的帮助,所以今天就来介绍一下这两种方法。

1.随机排序

1.1

let array = [1,2,5,6,3,9]    

let res = [];    

let len = array.length;    

let {random,floor} = Math;    

for (let i = 0; i < len; i++) {      

  let j = floor(random() * array.length);          //取到随机数

res[i] = array[j];                   //把array 数组的随机数赋给另一个数组

array.splice(j,1)   

  }    

console.log(res)

 1.2 第二种大概差不多,但是要麻烦不少。

let arr = [1, 5, 6, 9, 8, 5]; let res = []; 

let len = arr.length;

 let { floor, random } = Math

res.push('.') 

for (let i = 0; i < len; i++) {  

j = floor(random() * arr.length); 

if (String(res).charAt(j) === '.') break;   

else { res.push(arr[j]) }

 arr.splice(j, 1) 

}

let p = res.slice(res.indexOf('.') + 1)

console.log(p); 

  1.3   这种排序法最好,语法简洁,易懂明了;

let deck = [1,2,3,6,5,8,9,5], len = deck.length;

let {random,floor} = Math;

 function shuffle() {

 for (let i = len - 1; i > 0; i--) {  

let r =floor(random() * (i + 1)) ; 

[deck[i],deck[r]] = [deck[r], deck[i]]  // 交换数值

}

return deck;  

};

console.log(shuffle());

2 数组去重

2.1 学过es6的都会这种方法

let arr = [1, 2, 5, 9, 6, 5, 5, 6, 9, 8, 4, 8, 3, 6, 9, 5]

console.log([...new Set(arr)])

2.2  这种方法关键点在于要知道indexOf只返回第一个符合的数值(不指定的情况下)

function removeRepeat(arr) { 

return arr.filter(function (item, index, self) { 

return self.indexOf(item) === index; 

}  )

console.log(removeRepeat())

2.3 这种方法比较全面,因为不仅解决了数组去重,还顺便解决了数组(仅限数字)排序,就是有点麻烦

var res = { }

function removeRepeat () { for 

(let i = 0; i < array.length; i++) {

 if (`${array[i]}` in res) continue;

 else { 

res[array[i]] = 1         // 1 这个数字随便写的,不影响结果

 }

let arr = [] 

for (var j in res) { 

arr.push(j) 

}

return arr.join('')   //从小到大

//  return [...arr.reverse()].join('')  //从大到小

console.log( removeRepeat ())

如果你也有其他的方法,可以在下方留言,一起交流学习

相关文章

  • javascript三种数组去重和三种随机排序方法,面试必考题

    数组去重和随机排序是面试常考的知识点,掌握这两种方法对于自己的面试有会有一定的帮助,所以今天就来介绍一下这两种...

  • js基础算法

    排序 排序有很多种算法,这里只写基本的冒泡排序和快速排序 去重 这里写三种方法

  • JS: 数组去重

    数组去重算是面试题里常见的考点了,之前在 Medium 上看到一篇文章用三种方法实现数组去重的,感觉十分简洁。主要...

  • JavaScript 数组去重的多种方法原理详解

    JavaScript 数组去重的多种方法原理详解 说明 数组去重,这是一个面试经常会遇见的问题,网上讲数组去重的文...

  • JavaScript|数据类型

    JavaScript 数组可使用以下三种方法创建数组: 方法一:let cars=new Array();cars...

  • js中数组去重的三种方法

    数组去重的三种方法: 1、 利用es6中 set类型实现数组去重。 2、 新建一个空数组,然后循环之前的数组,判断...

  • 数组排序、去重、随机

    //随机取1-100之间10个不重复的整数 function suiji(){ var arr=[]; while...

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

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

  • js中的一些技巧

    1. arguments 对象转成数组 2. 数组求和 3. 数组元素随机排序 4. 数组去重

  • JavaScript语法和数据类型

    JavaScript有三种声明方法会 遍历数组的方法 数组的方法 1.concat() 将两个数组连接成一个新数组...

网友评论

      本文标题:javascript三种数组去重和三种随机排序方法,面试必考题

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