复合类型
在 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...
> 此处输出代码运行结果