当前位置: 首页 > news >正文

前端必知必会-JavaScript 数组属性和方法

文章目录

  • 数组属性和方法
    • length 属性
    • 循环数组元素
    • 添加数组元素
    • 关联数组
    • 数组和对象之间的区别
    • JavaScript new Array()
    • 如何识别数组
    • 嵌套数组和对象
  • 总结


数组属性和方法

JavaScript 数组的真正优势在于内置的数组属性和方法:

cars.length // 返回元素数量
cars.sort() // 对数组进行排序

length 属性

数组的 length 属性返回数组的长度(数组元素的数量)。

示例

const fruit = ["Banana", "Orange", "Apple", "Mango"];
let length = fruit.length;

length 属性始终比最高数组索引多一。

访问第一个数组元素
示例

const fruit = ["Banana", "Orange", "Apple", "Mango"];
let fruit = fruit[0];

访问最后一个数组元素
示例

const fruit = ["Banana", "Orange", "Apple", "Mango"];
let fruit = fruit[fruits.length - 1];

循环数组元素

循环数组的一种方法是使用 for 循环:
示例

const fruit = ["Banana", "Orange", "Apple", "Mango"];
let fLen = fruit.length;let text = "<ul>";
for (let i = 0; i < fLen; i++) {
text += "<li>" + fruit[i] + "</li>";
}
text += "</ul>";

您还可以使用 Array.forEach() 函数:

示例

const fruit = ["Banana", "Orange", "Apple", "Mango"];let text = "<ul>";
fruit.forEach(myFunction);
text += "</ul>";function myFunction(value) {
text += "<li>" + value + "</li>";
}

添加数组元素

向数组添加新元素的最简单方法是使用 push() 方法:

示例

const fruit = ["Banana", "Orange", "Apple"];
fruit.push("Lemon"); // 向 fruit 添加新元素 (Lemon)

还可以使用 length 属性将新元素添加到数组:

示例

const fruit = ["Banana", "Orange", "Apple"];
fruit[fruits.length] = "Lemon"; // 在水果中添加“柠檬”

警告!

添加具有高索引的元素可能会在数组中创建未定义的“洞”:

示例

const fruit = ["Banana", "Orange", "Apple"];
fruit[6] = "Lemon"; // 在水果中创建未定义的“洞”

关联数组

许多编程语言都支持具有命名索引的数组。

具有命名索引的数组称为关联数组(或哈希)。

JavaScript 不支持具有命名索引的数组。

在 JavaScript 中,数组始终使用编号索引。

示例

const person = [];
person[0] = "John";
person[1] = "Doe";
person[2] = 46;
person.length; // 将返回 3
person[0]; // 将返回“John”

警告!!
如果使用命名索引,JavaScript 会将数组重新定义为对象。

此后,某些数组方法和属性将产生不正确的结果。

示例:

const person = [];
person["firstName"] = "John";
person["lastName"] = "Doe";
person["age"] = 46;
person.length; // 将返回 0
person[0]; // 将返回 undefined

数组和对象之间的区别

在 JavaScript 中,数组使用编号索引。

在 JavaScript 中,对象使用命名索引。

数组是一种特殊的对象,具有编号索引。

何时使用数组。 何时使用对象。
JavaScript 不支持关联数组。
当您希望元素名称为字符串(文本)时,应使用对象。
当您希望元素名称为数字时,应使用数组。

JavaScript new Array()

JavaScript 有一个内置数组构造函数 new Array()。

但您可以安全地使用 []。

这两个不同的语句都创建了一个名为 points 的新空数组:

const points = new Array();
const points = [];

这两个不同的语句都创建了一个包含 6 个数字的新数组:

const points = new Array(40, 100, 1, 5, 25, 10);
const points = [40, 100, 1, 5, 25, 10];

new 关键字可能会产生一些意想不到的结果:

// 创建一个包含三个元素的数组:
const points = new Array(40, 100, 1);
// 创建一个包含两个元素的数组:const points = new Array(40, 100);
// 创建一个包含一个元素的数组 ???
const points = new Array(40);

常见错误

const points = [40];

与以下代码不同:

const points = new Array(40);
// 创建一个只有一个元素的数组:
const points = [40];
// 创建一个包含 40 个未定义元素的数组:
const points = new Array(40);

如何识别数组

一个常见的问题是:如何知道变量是否是数组?

问题是 JavaScript 运算符 typeof 返回“object”:

const fruit = ["Banana", "Orange", "Apple"];
let type = typeof fruit;

typeof 运算符返回 object,因为 JavaScript 数组是对象。

解决方案 1:
为了解决这个问题,ECMAScript 5(JavaScript 2009)定义了一个新方法 Array.isArray():

Array.isArray(fruits);

解决方案 2:
如果对象是由给定的构造函数创建的,则 instanceof 运算符返回 true:

const fruit = ["Banana", "Orange", "Apple"];(fruits instanceof Array);

嵌套数组和对象

对象中的值可以是数组,数组中的值可以是对象:

示例

const myObj = {
name: "John",
age: 30,
cars: [
{name:"Ford", models:["Fiesta", "Focus", "Mustang"]},
{name:"BMW", models:["320", "X3", "X5"]},
{name:"Fiat", models:["500", "Panda"]}
]
}

要访问数组内的数组,请对每个数组使用 for-in 循环:

示例

for (let i in myObj.cars) {
x += "<h1>" + myObj.cars[i].name + "</h1>";
for(let j in myObj.cars[i].models ){
x += myObj.cars[i].models[j];
}
}

总结

本文介绍了JavaScript 数组属性和方法的使用,如有问题欢迎私信和评论


http://www.mrgr.cn/news/69054.html

相关文章:

  • JDBC学习记录
  • 【万方数据】protobuf 逆向
  • jdk 1.8新特性--接口增强
  • Node.js 常用工具util、文件系统使用介绍 (基础介绍 七)
  • C语言多维数组抽象理解:切格子思维
  • Go 中的泛型,日常如何使用
  • D63【python 接口自动化学习】- python基础之数据库
  • 随身 WiFi 锁频段、频点和小区提升网速
  • 24-11-9-读书笔记(三十二)-《契诃夫文集》(六)上([俄] 契诃夫 [译] 汝龙)药品是甜的,真理是美的,咖啡是苦的,生活是什么啊?
  • Linux 零拷贝技术
  • VScode中使用Cmake遇到的问题及其解决方法[最全+亲测有效]
  • 食品加工厂废水处理设备结构与功能
  • 【梯度下降法优化】随机梯度下降、牛顿法、动量法、Nesterov、AdaGrad、RMSprop、Adam
  • Chromium 中chrome.tabs扩展接口定义c++
  • 青少年编程与数学 02-003 Go语言网络编程 19课题、Go语言Restful编程
  • 自动驾驶系列—DAI起步提醒功能:让你不再错过每一个绿灯
  • C++入门基础(二)
  • STM32单片机WIFI语音识别智能衣柜除湿消毒照明
  • 共享汽车管理:SpringBoot技术实现指南
  • AP8106低电压升压芯片