zoukankan      html  css  js  c++  java
  • 数组

    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
  • 相关阅读:
    HTTPD之五---HTTP协议、相关工具及状态码
    HTTPD之四----实现HTTPD正向代理与反向代理
    第十三周---DNS原理、实现智能DNS及源码编译mariadb数据库
    DNS之五----实现智能DNS
    sqoop 导入增量数据到hive
    Hadoop 二次排序
    Spark foreachpartiton和mappartition的异同
    hadoop 实现多文件输出
    spark 实现多文件输出
    Scala 中 call by name & call by value 的区别
  • 原文地址:https://www.cnblogs.com/zhfli/p/9419044.html
Copyright © 2011-2022 走看看