zoukankan      html  css  js  c++  java
  • [收集]数组操作

    --------内容来源互联网-----

    ES6 Arrary.from() 将两类对象转为真正的数组

    定义:用于将两类对象转为真正的数组(不改变原对象,返回新的数组)。

    参数:

      第一个参数(必需):要转化为真正数组的对象。

      第二个参数(可选): 类似数组的map方法,对每个元素进行处理,将处理后的值放入返回的数组。

      第三个参数(可选): 用来绑定this。

        // 1. 对象拥有length属性
        let obj = {0: 'a', 1: 'b', 2:'c', length: 3};
        let arr = Array.from(obj); // ['a','b','c'];
        // 2. 部署了 Iterator接口的数据结构 比如:字符串、Set、NodeList对象
        let arr = Array.from('hello'); // ['h','e','l','l','o']
        let arr = Array.from(new Set(['a','b'])); // ['a','b']

    splice() 添加/删除数组元素(改变数组)

    定义: splice() 方法向/从数组中添加/删除项目,然后返回被删除的项目

    eg1:删除元素

       let a = [1, 2, 3, 4, 5, 6, 7];
        let item = a.splice(0, 3); // [1,2,3]
        console.log(a); // [4,5,6,7]
        // 从数组下标0开始,删除3个元素
        let item = a.splice(-1, 3); // [7]
        // 从最后一个元素开始删除3个元素,因为最后一个元素,所以只删除了7

    eg2: 删除并添加

        let a = [1, 2, 3, 4, 5, 6, 7];
        let item = a.splice(0,3,'添加'); // [1,2,3]
        console.log(a); // ['添加',4,5,6,7]
        // 从数组下标0开始,删除3个元素,并添加元素'添加'
         let b = [1, 2, 3, 4, 5, 6, 7];
        let item = b.splice(-2,3,'添加1','添加2'); // [6,7]
        console.log(b); // [1,2,3,4,5,'添加1','添加2']
        // 从数组最后第二个元素开始,删除3个元素,并添加两个元素'添加1'、'添加2'

    eg3: 不删除只添加:

        let a = [1, 2, 3, 4, 5, 6, 7];
        let item = a.splice(0,0,'添加1','添加2'); // [] 没有删除元素,返回空数组
        console.log(a); // ['添加1','添加2',1,2,3,4,5,6,7]
        let b = [1, 2, 3, 4, 5, 6, 7];
        let item = b.splice(-1,0,'添加1','添加2'); // [] 没有删除元素,返回空数组
        console.log(b); // [1,2,3,4,5,6,'添加1','添加2',7] 在最后一个元素的前面添加两个元素
    1. 数组如果元素不够,会删除到最后一个元素为止
    2. 操作的元素,包括开始的那个元素
    3. 可以添加很多个元素
    4. 添加是在开始的元素前面添加的

    sort() 数组排序

      // 字符串排列 看起来很正常
        var a = ["Banana", "Orange", "Apple", "Mango"];
        a.sort(); // ["Apple","Banana","Mango","Orange"]
        // 数字排序的时候 因为转换成Unicode字符串之后,有些数字会比较大会排在后面 这显然不是我们想要的
        var    a = [10, 1, 3, 20,25,8];
        console.log(a.sort()) // [1,10,20,25,3,8];
    • 数组元素为数字的升序、降序:

      var array =  [10, 1, 3, 4,20,4,25,8];
       // 升序 a-b < 0   a将排到b的前面,按照a的大小来排序的 
       // 比如被减数a是10,减数是20  10-20 < 0   被减数a(10)在减数b(20)前面   
       array.sort(function(a,b){
         return a-b;
       });
       console.log(array); // [1,3,4,4,8,10,20,25];
       // 降序 被减数和减数调换了  20-10>0 被减数b(20)在减数a(10)的前面
       array.sort(function(a,b){
         return b-a;
       });
       console.log(array); // [25,20,10,8,4,4,3,1];
    • 数组多条件排序

      var array = [{id:10,age:2},{id:5,age:4},{id:6,age:10},{id:9,age:6},{id:2,age:8},{id:10,age:9}];
      array.sort(function(a,b){
          if(a.id === b.id){// 如果id的值相等,按照age的值降序
                   return b.age - a.age
          }else{ // 如果id的值不相等,按照id的值升序
                   return a.id - b.id
          }
      })
      // [{"id":2,"age":8},{"id":5,"age":4},{"id":6,"age":10},{"id":9,"age":6},{"id":10,"age":9},

      自定义比较函数,天空才是你的极限

      类似的:运用好返回值,我们可以写出任意符合自己需求的比较函数

      var array = [{name:'Koro1'},{name:'Koro1'},{name:'OB'},{name:'Koro1'},{name:'OB'},{name:'OB'}];
          array.sort(function(a,b){
              if(a.name === 'Koro1'){// 如果name是'Koro1' 返回-1 ,-1<0 a排在b的前面
                  return -1
              }else{ // 如果不是的话,a排在b的后面
                return 1
              }
          })
          // [{"name":"Koro1"},{"name":"Koro1"},{"name":"Koro1"},{"name":"OB"},{"name":"OB"},{"name":"OB"}] 
  • 相关阅读:
    MYSQL索引
    MYSQL 外键 on语句 多表查询
    MYSQL用户管理
    MYSQL数据类型 表基本操作 表记录增删改 单表查询
    JQuery 引用方式
    JQuery 元素操作 each循环
    Android EditText方框验证码 短信验证码攻略
    android MVP模式介绍与实战
    一些不错的Android开源音视频播放器
    Android可伸缩布局-FlexboxLayout(支持RecyclerView集成)
  • 原文地址:https://www.cnblogs.com/thing/p/9390606.html
Copyright © 2011-2022 走看看