• JavaScript 集合基本操作


    参考 MDN

    集合

    Array

    1. 2种创建数组的方式

    var fruits = [] ;
    var friuits = new Array();
    

    2. 遍历

    fruits.forEach(function (item, index, array){
        console.log(item, index);
    });
    // Apple 0
    // Banana 1
    for(var i in friuits){
    console.log(friuits[i]);
    }
    for(var i=0;i<friuits.length;i++){
    console.log(friuits[i]);
    }
    for(var value of friuits){
    console.log(value);
    }  
    

    3. 基本操作

    操作 代码 说明
    添加元素到数组的末尾 fruits.push('Orange') 返回数组长度
    添加元素到数组的头部 fruits.unshift('Strawberry') 返回数组长度
    删除头部元素 fruits.shift(); 返回头部元素
    删除尾部元素 fruits.pop(); 返回尾部元素
    找出某个元素在数组中的索引 fruits.indexOf('Banana'); 返回下标
    通过索引删除某个元素 fruits.splice(index, 1); 返回被删除的元素
    复制数组 var shallowCopy = fruits.slice(0,length); 返回指定范围内元素组成的新数组
    生成数组 Array.from() 返回Array.from() 方法从一个类似数组或可迭代对象中创建一个新的数组实例。

    4. 根据索引删除元素的例子

    /*    splice(start: number, deleteCount: number, ...items: T[]): T[]; */
    
    var fruits = ["apple","b","c","d"] ;
          console.log("array is : ");
          fruits.forEach(function (item, index, array){
              console.log(item, index);
          });
          var index = fruits.indexOf("b");
          fruits.splice(index,1);
          console.log("array is : ");
          fruits.forEach(function (item, index, array){
              console.log(item, index);
          });
    

    5. Array.from()使用例子

    var fruits = ["apple","b","c","d"] ;
          var f = Array.from(fruits);
          f.forEach(function (item, index, array){
              console.log(item, index);
          });
    //apple 0
    //b 1
    //c 2
    //d 3
    
    var f = Array.from("hello");
      f.forEach(function (item, index, array){
          console.log(item, index);
      });
    //h
    //e
    //l
    //l
    //o    
    
    Array.from()还可以用于Set,Map
    

    Set

    1. 源码定义

    interface Set<T> {
        add(value: T): this;
        clear(): void;
        delete(value: T): boolean;
        forEach(callbackfn: (value: T, value2: T, set: Set<T>) => void, thisArg?: any): void;
        has(value: T): boolean;
        readonly size: number;
    }
    

    2. 基本操作说明

    操作 代码 说明
    创建 new Set([iterable]); 可以放入数组,Set, Map来初始化
    添加元素 set.add(5) 返回Set本身
    删除元素 set.delete(5)) 返回bool
    判断是否有 set.has(5) 返回bool
    长度 set.size 注意与数组长度区别,数组是length
    清空 set.clear() 返回void

    3. 遍历例子

     let mySet = new Set([1,3,4,2,5]);
     //遍历
     for (let item of mySet) console.log(item);
     for (let item of mySet.keys()) console.log(item);
     for (let item of mySet.values()) console.log(item);
     //三个遍历结果一样: 1 3 4 2 5
    

    Map

    1. 源码定义

    interface Map<K, V> {
        clear(): void;
        delete(key: K): boolean;
        forEach(callbackfn: (value: V, key: K, map: Map<K, V>) => void, thisArg?: any): void;
        get(key: K): V | undefined;
        has(key: K): boolean;
        set(key: K, value: V): this;
        readonly size: number;
    }
    

    2. 基本操作说明

    操作 代码 说明
    创建 var myMap = new Map();
    添加 myMap.set(1,"hello") 返回map本身
    获得 myMap.get(1) 返回对应的value
    判断是否存在键 myMap.has(1) 返回bool
    根据键删除 myMap.delete(1) 返回bool

    3. 遍历

    for (var key of myMap.keys()) {
      console.log(key);
    }
    
    for (var value of myMap.values()) {
      console.log(value);
    }
    
    for (var [key, value] of myMap) {
      console.log(key + " = " + value);
    }
    
    for (var [key, value] of myMap.entries()) {
      console.log(key + " = " + value);
    }
    
    myMap.forEach(function(value, key) {
      console.log(key + " = " + value);
    }, myMap)
    

    4. 特殊说明

    任何一个NaN 都不等于 NaN, 但是NaN可以作为Map的键,而且是唯一的。
    undefined等于undefined ; 所有变量初始值都为undefined

      var myMap = new Map();
      myMap.set(NaN, "not a number");
      console.log(myMap.get(NaN));
      // "not a number"
      var otherNaN = Number("foo");
      console.log(myMap.get(otherNaN));
      // "not a number"
    
  • 相关阅读:
    获取IPhone相册中图片的方法(包括获取所有图片)
    CocoaPods的安装与使用介绍
    屏幕截图
    图片水印(微博图片上面的个人签名)
    info.plist选项含义
    最苦恼的又重要的屏幕适配
    Redis
    python的约束库constraint解决《2018刑侦科题目》
    start to learn python!
    用户体验分析: 以 “南通大学教务管理系统微信公众号” 为例
  • 原文地址:https://www.cnblogs.com/chenjingquan/p/9158682.html
Copyright © 2020-2023  润新知