» JavaScript快速入门 » 1. 基础篇 » 1.3 复合类型

复合类型

在 JavaScript 中,几乎所有东西都是一个对象。即使 functions 实际上也是具有可调用功能的对象。

对象

在 JavaScript 中,Objects 是唯一的可变值类型。

const person = {
  name: 'literank',
  age: 30,
  isStudent: false,
  address: {
    street: '123 Main St',
    city: 'Apple 🍏 Town',
  },
  hobbies: ['reading', 'coding', 'traveling']
};

// 访问对象的属性
console.log(person.name); // 输出: literank
console.log(person.address.city); // 输出: Apple 🍏 Town
console.log(person.hobbies[1]); // 输出: coding

// 修改属性
person.hobbies.push('gardening');

// 添加新属性
person.jobTitle = 'Software Engineer';

// 删除属性
delete person.isStudent;

// 遍历对象属性
for (const key in person) {
  console.log(`${key}: ${person[key]}`);
}

数组

Arrays 是一种特殊对象,其整数键值属性与其长度属性有特定关系的对象。

// 定义一个水果数组
const fruits = ['apple', 'banana', 'orange', 'grape', 'watermelon'];

// 访问数组的元素
console.log(fruits[0]); // 输出: apple
console.log(fruits[2]); // 输出: orange

// 修改元素
fruits[1] = 'kiwi';
fruits[3] = 'strawberry';

// 添加元素
fruits.push('mango');
fruits.unshift('pineapple');

// 删除元素
fruits.pop(); // 删除最后一个元素
fruits.shift(); // 删除第一个元素

// 查找元素的索引
const indexOfOrange = fruits.indexOf('orange');
console.log(indexOfOrange); // 输出: 2

// 切片数组
const slicedFruits = fruits.slice(1, 4);
console.log(slicedFruits); // 输出: ['kiwi', 'orange', 'strawberry']

// 遍历数组元素
for (let i = 0; i < fruits.length; i++) {
  console.log(fruits[i]);
}

// 使用 forEach 进行迭代
fruits.forEach((fruit) => {
  console.log(fruit);
});

集合

Set 对象允许存储任意类型的唯一值,无论是原始值还是对象引用。

// 创建一个 Set
const uniqueNumbers = new Set([1, 2, 3, 4, 5]);

// 将元素添加到 Set
uniqueNumbers.add(6);
uniqueNumbers.add(7);

// 尝试添加重复元素
uniqueNumbers.add(6);

// 从 Set 中删除元素
uniqueNumbers.delete(3);

// 检查元素是否存在于 Set 中
const hasFour = uniqueNumbers.has(4);
console.log(hasFour); // Output: true

// 获取 Set 的大小
const setSize = uniqueNumbers.size;
console.log(setSize); // Output: 6

// 使用 forEach 遍历 Set 元素
uniqueNumbers.forEach((number) => {
  console.log(number);
});

映射

Map 对象保存键值对并保持键的插入顺序。

// 创建一个 Map
const employeeMap = new Map();

// 向 Map 中添加键值对
employeeMap.set('John', 20);
employeeMap.set('Alice', 25);
employeeMap.set('Bob', 30);

// 通过键获取值
const johnAge = employeeMap.get('John');
console.log(johnAge); // 输出: 20

// 检查 Map 中是否存在键
const hasAlice = employeeMap.has('Alice');
console.log(hasAlice); // 输出: true

// 从 Map 中删除键值对
employeeMap.delete('Bob');

// 检查 Map 的大小
const mapSize = employeeMap.size;
console.log(mapSize); // 输出: 2

代码挑战

编写一个名为 countWords 的函数,该函数接受一个字符串作为输入,并返回一个 Map,其中键是字符串中去重后的单词,值是每个单词的出现频次。

注:去重时不区分大小写。

Loading...
> 此处输出代码运行结果
上页
下页