Skip to content

原生JavaScript数据结构

数组

数组是一种线性数据结构,表示一组元素的集合。在JavaScript中,数组没有固定的大小,而其内容可以是任何有效的类型,甚至是数组本身。数组可能是最常用的数据结构,它们提供了大量的方法,可以轻松地对其内容进行操作和转换。

const nums = [1, 2, 3];
const strs = Array.from('est');

nums.push(6);
nums.push(4, 9);
strs.unshift('t');

nums.length;                     // 6
nums[nums.length - 1];           // 9
strs[0];                         // 't'
strs[2];                         // 's'

nums.slice(1, 3);                // [2, 3]
nums.map(n => n * 2);            // [2, 4, 6, 12, 8, 18]
nums.filter(n => n % 2 === 0);   // [2, 6, 4]
nums.reduce((a, n) => a + n, 0); // 25

strs.reverse();                  // ['t', 's', 'e', 't']
strs.join('');                   // 'test'

集合

集合是一种线性数据结构,表示一个有序的唯一值集合。JavaScript中的集合可以存储任何有效类型的值,但是每个值只能根据值的相等性进行一次出现。

const nums = new Set([1, 2, 3]);

nums.add(4);
nums.add(1);
nums.add(5);
nums.add(4);

nums.size;                       // 5
nums.has(4);                     // true

nums.delete(4);
nums.has(4);                     // false

[...nums];                       // [1, 2, 3, 5]

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

Maps

Map是一种关联数据结构,表示一个键值对的集合。JavaScript的Map中的每个键都必须是唯一的,可以是原始值或对象,而Map的值可以是任何有效的类型。

const items = new Map([
  [1, { name: 'John' }],
  [2, { name: 'Mary' }]
]);

items.set(4, { name: 'Alan' });
items.set(2, { name: 'Jeff' });

items.size;                      // 3
items.has(4);                    // true
items.get(2);                    // { name: 'Jeff' }

items.delete(2);
items.size;                      // 2

[...items.keys()];               // [1, 4]
[...items.values()];             // [{ name: 'John' }, { name: 'Alan' }]

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