JavaScript - 键值集合

本文深入探讨JavaScript中的Map、WeakMap、Set和WeakSet数据结构,详细解析其特性、使用方法及与数组的区别,帮助读者掌握这些数据结构在实际编程中的应用。

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

Maps

Map对象

var sayings = new Map();
sayings.set('dog', 'woof');
sayings.set('cat', 'meow');
sayings.set('elephant', 'toot');
sayings.size; // 3
sayings.get('fox'); // undefined
sayings.has('bird'); // false
sayings.delete('dog');
sayings.has('dog'); // false

for (var [key, value] of sayings) {
  console.log(key + ' goes ' + value);
}
// "cat goes meow"
// "elephant goes toot"

sayings.clear();
sayings.size; // 0

WeakMap对象

键值必须是object

const privates = new WeakMap();

function Public() {
  const me = {
    // Private data goes here
  };
  privates.set(this, me);
}

Public.prototype.method = function() {
  const me = privates.get(this);
  // Do stuff with private data in `me`...
};

module.exports = Public;

Sets

set对象

set中的元素都是唯一的,意为set中的元素不能重复出现,只能出现一次。

var mySet = new Set();
mySet.add(1);
mySet.add('some text');
mySet.add('foo');

mySet.has(1); // true
mySet.delete('foo');
mySet.size; // 2

for (let item of mySet) console.log(item);
// 1
// "some text"

Array和set之间的转换

Array.from(mySet);
[...mySet2];

mySet2 = new Set([1, 2, 3, 4]);

Array和set比较

set元素的存储方式类似array,不同为:

  • 使用indexOf判断元素是否存在于数组中,这样的效率比较慢。
  • 可以使用元素值删除set中的元素,数组只能通过元素的索引来删除元素。
  • 不能通过indexOf来寻找数组中的NaN值。
  • set集合中只能存储不重复的元素值。

WeakSet对象

WeakSet中只能放入object。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值