zoukankan      html  css  js  c++  java
  • 数组的api以及api的简单使用

    一、对原数组造成影响的api

      1.push() 在最后添加

      eg: 原数组:      var arr = [5, 20, 6, 5, 80, 4]

        使用push()之后:  arr.push(123);     变为: [5, 20, 6, 5, 80, 4,123]

      2.pop() 取出最后一个
      eg: 原数组:      var arr = [5, 20, 6, 5, 80, 4]
        使用pop()之后:  arr.pop();     变为: [5, 20, 6, 5, 80]
      3.unshift() 在前面添加
      eg: 原数组:      var arr = [5, 20, 6, 5, 80, 4]
        使用unshift()之后:  arr.unshift(123);     变为: [123,5, 20, 6, 5, 80,4]
      4.shift() 取出第一个
       eg: 原数组:      var arr = [5, 20, 6, 5, 80, 4]
        使用shift()之后:  arr.shift();     变为: [20, 6, 5, 80,4]
      5.sort() 方法,对数组排序
        参数为一个回调函数!!!
        如果没有参数:则是按照第一位的ascII码排序
      eg:    原数组:      var arr = [5, 20, 6, 5, 80, 4]
        使用sort():    
                   arr.sort(function (val1, val2) {
          // return val1-val2; //val1-val2< 0 ,从小到大排列
          return val2 - val1; //val1-val2> 0 ,从大到小排列
        });
    二、不对元素组进行操作
      1.concat 数组的拼接 不会对原数组造成影响
     
       eg:    var arrl = [1,2,3,4];
          var arr2 = [11,12,13,14];
          var newArr = arrl.concat(arr2);
          console.log(newArr);
      
      运行结果:[1, 2, 3, 4, 11, 12, 13, 14]
     
      2.join("") 将数组分割成字符串,按照所填的字符 不会对原数组造成影响
     
      eg: var arrl = [1,2,3,4];
         var arr2=arrl.join("-");
        console.log(arr2);
     
      运行结果:1-2-3-4

      3.toString 将数组转化为字符串,将数组元素用逗号隔开 不改变原数组
     
      eg:    var arrl = [1,2,3,4];
          var arr2= arrl.toString();
          console.log(arr2);
     
      运行结果:1,2,3,4

      4.slice(start,end) 按照下标 数组的截取 不包括end 不会对原数组造成影响
     
      eg:   var arrl = [1,2,3,4];
          console.log(arrl.slice(0,3));
     
     
      运行结果:[1, 2, 3]

      5.splice(start,deleteCount,arr) 从start开始,删除几个 arr新插入的数组元素 操作的是原数组
      eg:    var arrl = [1,2,3,4];
          arrl.splice(1,2,78)
          console.log(arrl);
     
     
      运行结果:[1, 78, 4]
     
    三、实例
      
      1. 编写函数norepeat(arr) 将数组的重复元素去掉
      
      var arr = [1, 2, 3, 5, 6, 7, 8, 9, 41, 2, 5, 2, 3, 65, 5, 2, 2, 1, 5, 5, 5, 25, 9, 3, 3, 3, 3, 3, 3, 5, 5, 5, 5, 5, 6, 5, 2, 5, 5, 5, 4, 41, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1];

      function norepeat(arr) {
        while (true) {
          var flag = true;
          for (i = 0; i < arr.length; i++) {
            for (j = i + 1; j < arr.length; j++) {
              if (arr[i] == arr[j]) {
                arr.splice(j, 1);
                flag = false;
               }
            }
          }
        if (flag == true) {
          return arr;
         }
       }
     }
    console.log(norepeat(arr));
     2. 快速排序
    var arr = [5, 2, 8, 4, 3, 6, 1, 7];
    function quickSort(arr) {
      //递归结束条件
      if (arr.length <= 1) {
        return arr;
      }

    //取中间的值以及中间的下标
    var    midIndex = parseInt(arr.length / 2), //为什么后面是分号,会阻隔数组的定义,而不阻隔 midValue 变量的定义
        midValue = arr[midIndex],
        leftArr = [],
        rightArr = [];
        // 遍历arr数组,每一个值和中间的值相比较,大的放右侧数组,小的放左侧数组
        for (var i = 0; i < arr.length; i++) {
          //如果是中间小标的,跳出本次循环()不用中间值和自身比较
          if (i == midIndex) continue;
          if (arr[i] <= midValue) {
            leftArr.push(arr[i]);
          } else {
            rightArr.push(arr[i]);
          }
        }
        //利用递归处理左右数组
        return quickSort(leftArr).concat(midValue).concat(quickSort(rightArr));
    }
    console.log(quickSort(arr));
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
  • 相关阅读:
    java类,接口浅谈
    人月神话阅读笔记01
    学习进度条14
    学习进度条13
    每日站立会议10(完结)
    每日站立会议09
    每日站立会议08
    构建之法阅读笔记06(完)
    每日站立会议07
    每日站立会议06
  • 原文地址:https://www.cnblogs.com/lxz123/p/11444133.html
Copyright © 2011-2022 走看看