1.sort排序,
sort() 方法用于对数组的元素进行排序。
如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。要实现这一点,
首先应把数组的元素都转换成字符串(如有必要),以便进行比较。
如果想按照其他标准进行排序,就需要提供比较函数,该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。
1 // sore 排序 2 var arr1 = [15, 8, 25, 3] 3 // 升序 4 var compare = function (x, y) { 5 if (x < y) { 6 return -1 7 } else if (x > y) { 8 return 1 9 } else { 10 return 0 11 } 12 } 13 console.log(arr1.sort(compare)) // [ 3, 8, 15, 25 ] 14 // 降序 15 var compares = function (x, y) { 16 if (x < y) { 17 return 1 18 } else if (x > y) { 19 return 1 20 } else { 21 return 0 22 } 23 } 24 console.log(arr1.sort(compares)) // [ 25, 15, 8, 3 ]
2.冒泡排序.
遍历数组比较相邻的元素,如果第一个比第二个大,就交换位置。
1 var arr2 = [1, 4, -8, -3, 6, 12, 9, 8]; 2 for (var j = 0; j < arr2.length - 1; j++) { 3 //两两比较,如果前一个比后一个大,则交换位置。 4 for (var i = 0; i < arr2.length - 1 - j; i++) { 5 if (arr2[i] > arr2[i + 1]) { 6 var temp = arr2[i]; 7 arr2[i] = arr2[i + 1]; 8 arr2[i + 1] = temp; 9 } 10 } 11 } 12 console.log(arr2, 'arr') // [ -8, -3, 1, 4, 6, 8, 9, 12 ]
3.快速排序.
Math.floor(x)方法是向下取整,返回小于或等于x的最接近的整数。
splice(index,num,item)方法是向数组中添加项目,或是从数组中删除项目,并返回被删除的项目。
- index是整数,被操作项目所在的位置(必须)
- num是整数,要删除的项目的数量,如果为0,表示不删除(必须)
- item是向数组中添加的新项目,可以是多个(可选)
push()方法是向数组末尾添加一个或多个新项目并返回新数组的长度
concat()方法连接两个或多个数组,不会改变原有数组,返回一个新数组
1 var a = [1, 2] 2 var b = [3, 4] 3 // 合并数组 4 console.log(a.concat(b)) [1,2,3,4]
1 var array = [14, 45, -48, -53, 64, 125, 94, 8]; 2 function sorts(arr) { 3 if (arr.length <= 1) { 4 return arr; 5 } 6 var index = Math.floor(arr.length / 2); 7 //取到中间值 8 var temp = arr.splice(index, 1); 9 //定义左右部分数组 10 var a = []; 11 var b = []; 12 for (var i = 0; i < arr.length; i++) { 13 if (arr[i] < temp) { 14 a.push(arr[i]); 15 } else { 16 b.push(arr[i]); 17 } 18 } 19 return sorts(a).concat(temp, sorts(b)); 20 } 21 console.log(sorts(array)) // [ -53, -48, 8, 14, 45, 64, 94, 125 ]
3.插入排序.
1 var arrd = [3, 4, 6, 32, 2, -4, 54, 2, 3] 2 for (var i = 1; i < arrd.length; i++) { 3 if (arrd[i] < arrd[i - 1]) { 4 //取出无序序列中需要插入的第i个元素 5 var temp = arrd[i]; 6 //定义有序中的最后一个位置 7 var j = i - 1; 8 console.log(j, 'eee') 9 arrd[i] = arrd[j]; 10 //比较大小,找到插入的位置 11 while (j >= 0 && temp < arrd[j]) { 12 arrd[j + 1] = arrd[j]; 13 j--; 14 }; 15 //插入 16 arrd[j + 1] = temp; 17 } 18 } 19 console.log(arrd, 'arrd')
4.set
1 const s = new Set(); 2 [2,4,5,6,33,44,33].forEach(x => s.add(x)) 3 var arr = [] 4 for (let i of s) { 5 arr.push(i) 6 } 7 console.log(arr, 'eeee') // [ 2, 4, 5, 6, 33, 44 ]
5. reduce和reduceRight
1 // 从左到右累加 2 var a = [10, 20, 30] 3 var total = a.reduce(function (first, second) { 4 return first + second 5 }, 0) 6 console.log(total) // 60 7 // 从右向左累加 8 var totals = a.reduceRight(function (first, second) { 9 return first + second 10 }, 0) 11 console.log(totals) // 60
6.数组过滤
1 var a1 = ['1', 3, 'a', 3, 4, 6, 10] 2 var a2 = a1.filter(function (item) { 3 return typeof item === 'number' 4 })
// 返回一个新的数组 5 console.log(a2, 'eeeeeeee') // [ 3, 3, 4, 6, 10 ]
7.every(且)返回布尔值
1 function isNumber(value) { 2 return typeof value === 'number' 3 } 4 var a1 = [1,3,4,'d'] 5 console.log(a1.every(isNumber)) // false 6 var a1 = [1,3,4] 7 console.log(a1.every(isNumber)) // true
8.some(或)返回布尔值
1 function isNumber(value) { 2 return typeof value === 'number' 3 } 4 var a1 = [1,3,4, 'd'] 5 console.log(a1.some(isNumber))
9.伪数组=》真实数组
Array.prototype.slice.call(数组)
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Title</title> 6 </head> 7 <body> 8 <div> 9 <div class="wrap"> 10 111ee 11 </div> 12 <div class="wrap"> 13 11188 14 </div> 15 <div class="wrap"> 16 1116657 17 </div> 18 <div class="wrap"> 19 111765 20 </div> 21 <div class="wrap"> 22 11143 23 </div> 24 <div class="wrap"> 25 111343534 26 </div> 27 </div> 28 </body> 29 <script> 30 var a = document.getElementsByClassName('wrap') 31 console.log(a) // 伪数组 32 console.log(Array.prototype.slice.call(a)) // 真实数组 33 </script> 34 </html>
10.find方法
1 var a = [1, 2, 3, 4].find((value, index, arr) => { 2 return value > 2 3 }) 4 console.log(a, 'eee') // 3
11.findIndex方法
1 var a = [30, 34, 6, 56].findIndex((value, index, arr) => { 2 return value > 2 3 }) 4 console.log(a, 'eee') // 0返回index