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 ...
随机推荐
- 读-写锁 ReadWriteLock & 线程八锁
读-写锁 ReadWriteLock: ①ReadWriteLock 维护了一对相关的锁,一个用于只读操作, 另一个用于写入操作. 只要没有 writer,读取锁可以由 多个 reader 线程同时保 ...
- Spring boot Sample 0010之spring-boot-web-freemarker
一.环境 1.1.Idea 2020.1 1.2.JDK 1.8 二.目的 spring boot 整合freemarker模板开发web项目 三.步骤 3.1.点击File -> New Pr ...
- 一文带你了解js数据储存及深复制(深拷贝)与浅复制(浅拷贝)
背景 在日常开发中,偶尔会遇到需要复制对象的情况,需要进行对象的复制. 由于现在流行标题党,所以,一文带你了解js数据储存及深复制(深拷贝)与浅复制(浅拷贝) 理解 首先就需要理解 js 中的数据类型 ...
- Java实现蓝桥杯单位转换
单位转换 [问题描述] BobLee最近在复习考研,在复习计算机组成原理的时候,遇到了一个问题.就是在计算机存储里面的单位转换. 我们都知道1MB=1024KB,1KB=1024B,1B=8bit,他 ...
- Java实现 LeetCode 167 两数之和 II - 输入有序数组
167. 两数之和 II - 输入有序数组 给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数. 函数应该返回这两个下标值 index1 和 index2,其中 index1 必 ...
- java实现第七届蓝桥杯棋子换位
棋子换位 棋子换位 有n个棋子A,n个棋子B,在棋盘上排成一行. 它们中间隔着一个空位,用"."表示,比如: AAA.BBB 现在需要所有的A棋子和B棋子交换位置. 移动棋子的规则 ...
- java实现第四届蓝桥杯三部排序
三部排序 题目描述 一般的排序有许多经典算法,如快速排序.希尔排序等. 但实际应用时,经常会或多或少有一些特殊的要求.我们没必要套用那些经典算法,可以根据实际情况建立更好的解法. 比如,对一个整型数组 ...
- 从源码研究如何不重启Springboot项目实现redis配置动态切换
上一篇Websocket的续篇暂时还没有动手写,这篇算是插播吧.今天讲讲不重启项目动态切换redis服务. 背景 多个项目或微服务场景下,各个项目都需要配置redis数据源.但是,每当运维搞事时(修改 ...
- unittest单元测试框架入门及应用
一.简介 unittest是Python单元测试框架.unittest它支持自动化测试,在测试中使用setup(初始化)和shutdown(关闭销毁)操作,组织测试 用例为套件(批量运行),以及把测试 ...
- jmeter怎么衡量tps的值
jmeter也没有tps这么个报告数据,后来又翻了翻loadrunner关于tps的定义 1.TPS:Trasaction per second也就是事务数/秒.它是软件测试结果的测量单位.一个事务是 ...