JavaScript基础回顾:数组与对象

170 阅读3分钟

JavaScript基础:数组与对象

JavaScript是一种灵活且功能强大的编程语言,广泛用于前端和后端开发。在这篇文章中,我们将简单的回顾一下JavaScript的两个核心数据结构:数组(Array)和对象(Object)。了解这两者的特性和使用方法是掌握JavaScript的关键。

一、数组(Array)

数组是一个用于存储多个值的集合。与许多编程语言一样,JavaScript的数组可以包含不同类型的元素,包括数字、字符串、对象,甚至是其他数组。这使得数组成为一个非常灵活的数据结构。

1. 创建数组

在JavaScript中,有多种方法可以创建数组。最常见的方式是使用字面量语法:

let fruits = ['apple', 'banana', 'orange'];

你也可以使用Array构造函数来创建数组:

let numbers = new Array(1, 2, 3, 4);

2. 访问数组元素

数组中的元素可以通过索引访问。注意,JavaScript的数组索引从0开始:

console.log(fruits[0]); // 输出 'apple'
console.log(numbers[2]); // 输出 3

3. 数组的常用方法

JavaScript提供了许多用于操作数组的方法:

  • push():在数组末尾添加一个或多个元素。
fruits.push('grape');
console.log(fruits); // ['apple', 'banana', 'orange', 'grape']
  • pop():删除数组末尾的元素,并返回该元素。
let lastFruit = fruits.pop();
console.log(lastFruit); // 输出 'grape'
console.log(fruits); // ['apple', 'banana', 'orange']
  • shift():删除数组开头的元素,并返回该元素。
let firstFruit = fruits.shift();
console.log(firstFruit); // 输出 'apple'
console.log(fruits); // ['banana', 'orange']
  • unshift():在数组开头添加一个或多个元素。
fruits.unshift('kiwi');
console.log(fruits); // ['kiwi', 'banana', 'orange']
  • slice():返回数组的一个片段,而不修改原数组。
let citrus = fruits.slice(1, 3);
console.log(fruits);  //[ 'kiwi', 'banana', 'orange' ]
console.log(citrus); // ['banana', 'orange']
  • splice():可以添加或删除数组中的元素,原数组会被修改。
let removeFruits = fruits.splice(1, 1, 'mango'); // 从索引1开始删除1个元素,并添加'mango'
console.log(fruits); // ['kiwi', 'mango', 'orange']
console.log(removeFruits); // ['banana']

4. 数组遍历

遍历数组是常见的操作,可以使用for循环、forEach()方法、以及其他迭代方法:

for (let i = 0; i < fruits.length; i++) {
    console.log(fruits[i]);
}

fruits.forEach(fruit => {
    console.log(fruit);
});

此外,ES6引入的for...of循环使得遍历数组更加简洁:

for (const fruit of fruits) {
    console.log(fruit);
}

5. 数组的高级用法

JavaScript数组还支持一些高级操作,如排序、过滤和映射。

  • sort():对数组进行排序。
let numbers = [4, 2, 5, 1, 3];
numbers.sort(); // 默认按字符串排序
console.log(numbers); // [1, 2, 3, 4, 5]
  • filter():创建一个新数组,包含所有符合条件的元素。
let evenNumbers = numbers.filter(num => num % 2 === 0);
console.log(evenNumbers); // [2, 4]
  • map():创建一个新数组,包含对原数组中每个元素调用函数的结果。
let squares = numbers.map(num => num * num);
console.log(squares); // [1, 4, 9, 16, 25]
  • reduce():将数组中的所有元素归约为单个值。
let sum = numbers.reduce((acc, num) => acc + num, 0); // 0是初始值
console.log(sum); // 输出 15

二、对象(Object)

对象是JavaScript中最重要的数据结构之一。它是一种无序的键值对集合,可以存储不同类型的数据。

1. 创建对象

在JavaScript中,可以使用字面量语法或构造函数来创建对象:

let person = {
    name: 'John',
    age: 30,
    greet: function() {
        console.log(`Hello, my name is ${this.name}`);
    }
};

使用new Object()构造函数创建对象:

let car = new Object();
car.make = 'Toyota';
car.model = 'Corolla';

2. 访问对象属性

对象的属性可以通过点语法或方括号语法访问:

console.log(person.name); // 输出 'John'
console.log(person['age']); // 输出 30

3. 修改对象属性

你可以直接修改对象的属性:

person.age = 31;
console.log(person.age); // 输出 31

4. 添加和删除属性

可以随时向对象添加新属性,或删除现有属性:

person.job = 'Developer';
delete person.age;
console.log(person); // 输出包含新属性的对象

5. 对象的常用方法

JavaScript提供了一些内置方法来操作对象,比如Object.keys()Object.values()Object.entries()

  • Object.keys():返回对象的所有键。
console.log(Object.keys(person)); // 输出 ['name', 'greet', 'job']
  • Object.values():返回对象的所有值。
console.log(Object.values(person)); // 输出 ['John', [Function: greet], 'Developer']
  • Object.entries():返回对象的所有键值对。
console.log(Object.entries(person)); // 输出 [['name', 'John'], ['greet', [Function: greet]], ['job', 'Developer']]

6. 对象的继承

JavaScript中的对象可以通过原型链实现继承。使用Object.create()可以基于现有对象创建新对象。

let student = Object.create(person);
student.grade = 'A';
console.log(student.name); // 输出 'John'

7. ES6中的类(Class)

ES6引入了类的概念,提供了一种更清晰的方式来创建对象和实现继承:

class Animal {
    constructor(name) {
        this.name = name;
    }
    speak() {
        console.log(`${this.name} makes a noise.`);
    }
}

class Dog extends Animal {
    speak() {
        console.log(`${this.name} barks.`);
    }
}

let dog = new Dog('Rex');
dog.speak(); // 输出 'Rex barks.'

结论

数组和对象是JavaScript中最基本也是最重要的数据结构。掌握它们的用法能够帮助你更高效地处理数据,构建复杂的应用。无论是使用数组进行数据的存储和处理,还是通过对象管理状态和行为,了解这两者的特性和方法将大大提升你的编程能力。

在实际开发中,灵活运用数组和对象,将为你创建更高效、更可维护的代码打下坚实的基础。