全部 / 前端 / 技术 · 2022年4月16日 0

6 – JavaScript 中的数组

广告位招租 (vx: ghostcode, 备注:网站广告)

原文地址:https://dev.to/bhagatparwinder/arrays-in-javascript-5fc7

什么是数组?

JavaScript 中的数组是一种用于存储多个元素或顺序重要的一种数据结构。记住数组的 typeof 返回的是对象。

数组中的每个元素都有下标,下标就是元素在数组中的位置。数组的下标是从0开始的,第一个元素的下标是 0 ,第二个的下标是 1 以此类推。元素的总个数就是数组的长度。

如何创建一个数组?

// Using the square bracket notation
const carArray = ["Honda", "BMW", "Ferrari", 27, true];

// Using new keyword
const bikeArray = new Array("Honda", "Ducati", "Yamaha");

⚠️警告:不推荐使用 new 关键字来创建数组,下面会介绍到。

如何判断一个变量是否为数组?

因为 typeof 数组返回的是对象,当你执行以下操作时:

const carArray = ["Honda", "BMW", "Ferrari", 27, true];
console.log(typeof(carArray)); // output will be object!

你应该按照下面的做:

const carArray = ["Honda", "BMW", "Ferrari", 27, true];
console.log(Array.isArray(carArray)); // true

我们同样可以这样:

const carArray = ["Honda", "BMW", "Ferrari", 27, true];
carArray instanceof Array; // true

如何获取数组中的元素?

答案是:下标。

const carArray = ["Honda", "BMW", "Ferrari", 27, true];
console.log(carArray[2]); // Ferrari

记住 Ferrari 即使在数组中是第三个元素,由于下标是从 0 开始所以它的下标是 2。

更改数组中的元素

修改元素就像你从数组中获取元素一样,都可以通过下标:

const carArray = ["Honda", "BMW", "Ferrari", 27, true];
carArray[2] = "Mazda";
console.log(carArray); // [ 'Honda', 'BMW', 'Mazda', 27, true ] 

数组的长度

使用 length 属性获得:

const carArray = ["Honda", "BMW", "Ferrari", 27, true];
console.log(carArray.length); // 5

若要获取最后一个元素,你可以这样:

const carArray = ["Honda", "BMW", "Ferrari", 27];
console.log(carArray[carArray.length - 1]); // 27

数组中的常用方法

下篇文章我会介绍许多数组的方法,但现在我只介绍另个常用方法:

  1. Push: 向数组末尾添加元素
const carArray = ["Honda", "BMW", "Ferrari", 27, true];
carArray.push("Mazda");
console.log(carArray); // [ 'Honda', 'BMW', 'Ferrari', 27, true, 'Mazda' ] 
  1. Sort: 为数组排序,且会改变原数组
const carArray = ["Honda", "BMW", "Ferrari", 27, true];
carArray.sort();
console.log(x); // [ 27, 'BMW', 'Ferrari', 'Honda', true ] 

为何不推荐使用 new 来创建数组?

中括号和 new 关键字在创建空数组或依照传入的数据来创建数组是一样的。

new 关键字有时候会表现和预期有差异:

let score = new Array(5, 10);
console.log(score); // [ 5, 10 ]

score = new Array(5);
console.log(score); // [ , , , ,  ]

第一个创建了一个包含 5 和 10 的数组,但第二个却生成了 5 个包含 undefined 的数组而不是包含5的数组。