数组

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
原文地址:https://www.cnblogs.com/zhfli/p/9419044.html