JavaScript 集合基本操作

本文详细介绍了JavaScript中数组的创建与操作方法,包括数组的遍历、基本操作及特殊用法。同时,还深入探讨了Set和Map数据结构的基本概念、创建方式及其常用操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考 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"

转载于:https://www.cnblogs.com/chenjingquan/p/9158682.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值