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"
												
											JavaScript 集合基本操作的更多相关文章
- javascript DOM基本操作
		
javascript DOM基本操作 1.DOM(Document Object Model 文档对象模型) 2.节点: 文档节点:document 元素节点:html.head.body.title ...
 - javascript集合求交集
		
两集合求交集 思路: 1. 每一次从B数组中取一值,然后在A数组里逐个比较,如果有相等的,则保存.该算法复杂度为 O(MN). M, N 分别为数组 A B 的长度. 2. 因为A B 都排过序,所以 ...
 - javascript集合的交,并,补,子集,长度,新增,删除,清空等操作
		
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat=&qu ...
 - JavaScript 数组基本操作
		
简介 数组操作无论是在JavaScript中还是在其他语言中都是很常见.经常会用到的,现在我把JavaScript 数组基本操作整理一下,供大家参考学习.里边包含我自己的见解以及案例,希望能够帮助大家 ...
 - 集合基本操作 Python DAY2
		
集合本身具有两个特性 1.去重 2.关系测试 列表转集合的两种写法: list_1=[1,2,3,4,1,2,7,8,] list_1=set(list_1) #方法二 list_2=set([1, ...
 - JavaScript 集合对象
		
1. 集合对象 1.1 Object 关于Object类型的创建和底层存储原理我在另一篇文章有说明: JavaScript 对象属性底层原理 我们知道了大多数情况下Object底层都是Hash结构,我 ...
 - set()集合基本操作
		
运用频次:☆☆ set是一个无序且不重复元素集,基本操作如下: 1. 创建set集合,会自动转换成set类型 2. add():添加元素 def add(self, *args, **kwargs): ...
 - JavaScript的基本操作(一)
		
JavaScript中有大量的方法可供我们使用,详情可参考:http://jquery.cuishifeng.cn/这也同时导致我们不可能去记住每一个的用法,且开发者每天都在新添更多的方法,所以要想掌 ...
 - 记录Javascript集合操作
		
function Set() { var items = {}; /** * 添加元素 * @param {[type]} value [description] */ this.add = func ...
 
随机推荐
- oracle11g数据库导入、导出操作
			
一.在linux系统中导入数据库. 1.linux中先输入 su - oracle下切换到oracle用户.然后以sysdba打开sqlplus:sqlplus / as sysdba 然后创建表空间 ...
 - Java实现 蓝桥杯 基础练习 01字串
			
基础练习 01字串 时间限制:1.0s 内存限制:256.0MB 提交此题 锦囊1 锦囊2 问题描述 对于长度为5位的一个01串,每一位都可能是0或1,一共有32种可能.它们的前几个是: 00000 ...
 - Java实现 蓝桥杯VIP 算法提高 连接乘积
			
算法提高 连接乘积 时间限制:1.0s 内存限制:256.0MB 问题描述 192这个数很厉害,用它分别乘以1.2.3,会得到: 192 x 1 = 192 192 x 2 = 384 192 x 3 ...
 - Java实现 LeetCode 153 寻找旋转排序数组中的最小值
			
153. 寻找旋转排序数组中的最小值 假设按照升序排序的数组在预先未知的某个点上进行了旋转. ( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] ). 请找出其中 ...
 - Java实现第九届蓝桥杯倍数问题
			
倍数问题 题目描述 [题目描述] 众所周知,小葱同学擅长计算,尤其擅长计算一个数是否是另外一个数的倍数.但小葱只擅长两个数的情况,当有很多个数之后就会比较苦恼.现在小葱给了你 n 个数,希望你从这 n ...
 - Netty源码学习系列之1-netty的串行无锁化
			
前言 最近趁着跟老东家提离职之后.到新公司报道之前的这段空闲时期,着力研究了一番netty框架,对其有了一些浅薄的认识,后续的几篇文章会以netty为主,将近期所学记录一二,也争取能帮未对netty有 ...
 - HashMap源码解析(java1.8.0)
			
1.1 背景知识 1.1.1 红黑树 二叉查找树可能因为多次插入新节点导致失去平衡,使得查找效率低,查找的复杂度甚至可能会出现线性的,为了解决因为新节点的插入而导致查找树不平衡,此时就出现了红黑树. ...
 - ZooKeeper搭建集群
			
ZooKeeper ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件.它是一个为分布式应用提供一致性 ...
 - docker安装nacos
			
nacos 最近尝试着将项目由springcloud + netflix重构为springcloud alibaba,需要安装一些组件,感觉安装太麻烦,版便尝试着使用docker来部署,发现挺方便,记 ...
 - c#撸的控制台版2048小游戏
			
1.分析 最近心血来潮,突然想写一个2048小游戏.于是搜索了一个在线2048玩玩,熟悉熟悉规则. 只谈核心规则:(以左移为例) 1.1合并 以行为单位,忽略0位,每列依次向左进行合并,且每列只能合并 ...