Set是es6新增的数据结构,似于数组。 Set 是一种 JavaScript 内置的数据结构,用于存储唯一的值。在 Set中,任何类型的值(包括对象、原始值、NaN、undefined 和 null)都可以作为元素,而且每个元素只能出现一次。Set提供了一些有用的方法,用于操作集合中的元素。
1. 创建 Set
const mySet = new Set([1, 2, 3, 4, 5]);
你可以通过传入一个可迭代对象(如数组)来初始化一个 Set。如果初始化时传入的数组包含重复元素,这些重复元素会被自动去除。
向 Set 中添加一个元素。返回 Set 本身,以便可以链式调用。
mySet.add(6);
删除 Set 中的指定元素。如果元素存在,则返回 true,否则返回 false。
mySet.delete(4); // true
mySet.delete(10); // false
检查 Set 中是否包含指定的元素。返回布尔值。
console.log(mySet.has(2)); // true
console.log(mySet.has(10)); // false
删除 Set 中的所有元素。
mySet.clear();
返回 Set 中元素的数量。
console.log(mySet.size); // 6
Set 支持多种遍历方式,主要包括:
mySet.forEach(value => {
console.log(value);
});
for (const value of mySet) {
console.log(value);
}
for (const entry of mySet.entries()) {
console.log(entry);
}
for (const value of mySet.values()) {
console.log(value);
}
for (const key of mySet.keys()) {
console.log(key);
}
案例
const numbers = new Set([1, 2, 3, 4, 4, 5]);
console.log(numbers); // Set { 1, 2, 3, 4, 5 }
numbers.add(6);
numbers.add(1); // 1 已经存在,不会被添加
console.log(numbers.size); // 6
numbers.delete(2);
console.log(numbers.has(2)); // false
numbers.forEach(num => console.log(num));
// 使用 for...of 遍历
for (const num of numbers) {
console.log(num);
}
// 使用 entries() 遍历
for (const [key, value] of numbers.entries()) {
console.log(key, value);
}
// 清空 Set
numbers.clear();
console.log(numbers.size); // 0
let arr = [3, 5, 2, 2, 5, 5];
let setArr = new Set(arr) // 返回set数据结构 Set(3) {3, 5, 2}
let uniqueArr = [...setArr ]; //去重转数组后 [3,5,2]
在 JavaScript 中,Map 是一种内置的数据结构,用于存储键值对(key-value pairs)。与普通对象不同,Map 的键可以是任何类型的值,包括对象、函数和原始值。Map 保持插入顺序,可以通过各种方法进行操作。
const myMap = new Map();
你还可以在创建时传入一个可迭代对象(如数组)来初始化 Map:
const myMap = new Map([
['key1', 'value1'],
['key2', 'value2'],
['key3', 'value3']
]);
myMap.set('key4', 'value4');
console.log(myMap.get('key1')); // 'value1'
console.log(myMap.has('key2')); // true
console.log(myMap.has('key5')); // false
myMap.delete('key3'); // true
myMap.clear();
console.log(myMap.size); // 3
Map 提供了多种遍历方式:
myMap.forEach((value, key) => {
console.log(`${key}: ${value}`);
});
for (const [key, value] of myMap.entries()) {
console.log(`${key}: ${value}`);
}
for (const key of myMap.keys()) {
console.log(key);
}
for (const value of myMap.values()) {
console.log(value);
}
示例
const myMap = new Map([
['name', 'Alice'],
['age', 25],
['city', 'New York']
]);
console.log(myMap.get('name')); // Alice
myMap.set('job', 'Engineer');
console.log(myMap.size); // 4
myMap.delete('age');
console.log(myMap.has('age')); // false
myMap.forEach((value, key) => {
console.log(`${key}: ${value}`);
});
// 使用 for...of 遍历
for (const [key, value] of myMap) {
console.log(`${key}: ${value}`);
}
// 清空 Map
myMap.clear();
console.log(myMap.size); // 0
Map 提供了一种灵活且高效的方式来处理键值对,是现代 JavaScript 开发中常用的数据结构之一。