前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JavaScript数组

JavaScript数组

作者头像
hotarugali
发布2022-03-01 09:13:54
1.2K0
发布2022-03-01 09:13:54
举报

1. 概述

数组是一种特殊类型的对象。在 JavaScript 中对数组使用 typeof 运算符会返回 “object”。

  • 数组元素可以通过下表访问(非键值对数组),也可以通过键访问(键值对数组)。
  • JavaScript 变量可以是对象。数组是特殊类型的对象。可以在相同数组中存放不同类型的变量:对象、函数、数组等……

1.1 创建数组

  • 语法:
代码语言:javascript
复制
var array-name = [item1, item2, ...];
var cars = new Array("Saab", "Volvo", "BMW");

1.2 访问数组元素

  • 通过引用索引号(下标号)来引用某个数组元素。

1.3 添加数组元素

  • 向数组添加新元素的最佳方法是使用 push() 方法。
  • 也可以使用下标直接向数组添加新元素(若添加索引高出数组当前长度范围,则会在数组中未赋值的下标位置创建未定义的“洞”):
代码语言:javascript
复制
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits[fruits.length] = "Lemon";     // 向 fruits 添加一个新元素 (Lemon)

1.4 数组和对象的区别

  • 在 JavaScript 中,数组使用数字索引。
  • 在 JavaScript 中,对象使用命名索引。

2. 属性

  • length :属性返回数组的长度(数组元素的数目)。

3. 方法

  • toString() :把数组转换为数组值(逗号分隔)的字符串。 【注】所有 JavaScript 对象都拥有 toString() 方法。
  • join() :方法也可将所有数组元素结合为一个字符串。它的行为类似 toString(),但是您还可以规定分隔符。
  • pop() :方法从数组中删除最后一个元素。pop() 方法返回“被弹出”的值。
  • push() :方法(在数组结尾处)向数组添加一个新的元素。push() 方法返回新数组的长度。
  • shift() :方法会删除首个数组元素,并把所有其他元素“位移”到更低的索引。shift() 方法返回被“位移出”的字符串。
  • unshift() :方法(在开头)向数组添加新元素,并“反向位移”旧元素。unshift() 方法返回新数组的长度。
  • splice() :方法可用于向数组添加新项。splice() 方法返回一个包含已删除项的数组。
代码语言:javascript
复制
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.splice(2, 0, "Lemon", "Kiwi");

其中,第一个参数(2)定义了应添加新元素的位置(拼接);第二个参数(0)定义应删除多少元素;其余参数(“Lemon”,“Kiwi”)定义要添加的新元素。 【注】其余参数可省略。

  • concat() :方法通过合并(连接)现有数组来创建一个新数组。concat() 方法不会更改现有数组。它总是返回一个新数组。concat() 方法可以使用任意数量的数组参数。
  • slice() :方法用数组的某个片段切出新数组。slice() 方法创建新数组。它不会从源数组中删除任何元素。

slice() 可接受两个参数,比如 (1, 3)。该方法会从开始参数选取元素,直到结束参数(不包括)为止。如果结束参数被省略,比如第一个例子,则 slice() 会切出数组的剩余部分。

  • sort() :方法以字母顺序对数组进行排序。sort() 可以接受自定义的比较函数来定义自己的排序顺序。
代码语言:javascript
复制
var points = [40, 100, 1, 5, 25, 10];
points.sort(function(a, b){return b - a}); 
  • reverse() :方法反转数组中的元素。
  • Math.max.apply() :来查找数组中的最大值。
  • Math.min.apply() :来查找数组中的最低值。
代码语言:javascript
复制
function myArrayMax(arr) {
    return Math.max.apply(null, arr);
}
function myArrayMin(arr) {
    return Math.min.apply(null, arr);
}

【注】以下方法老版本浏览器(比如 Internet Explorer 8 或更早的版本)不支持。

  • forEach() :方法为每个数组元素调用一次函数(回调函数)。
代码语言:javascript
复制
var txt = "";
var numbers = [45, 4, 9, 16, 25];
numbers.forEach(myFunction);
function myFunction(value, index, array) {
  txt = txt + value + "<br>"; 
}

该函数接受 3 个参数:

  1. 项目值
  2. 项目索引
  3. 数组本身
  • map() :方法通过对每个数组元素执行函数来创建新数组。
  1. map() 方法不会对没有值的数组元素执行函数。
  2. map() 方法不会更改原始数组。
代码语言:javascript
复制
var numbers1 = [45, 4, 9, 16, 25];
var numbers2 = numbers1.map(myFunction);
function myFunction(value, index, array) {
  return value * 2;
}

该函数接受 3 个参数(当回调函数仅使用 value 参数时,可以省略索引和数组参数):

  1. 项目值
  2. 项目索引
  3. 数组本身
  • filter() :方法创建一个包含通过测试的数组元素的新数组。
代码语言:javascript
复制
var numbers = [45, 4, 9, 16, 25];
var over18 = numbers.filter(myFunction);
function myFunction(value, index, array) {
  return value > 18;
}

该函数接受 3 个参数(当回调函数仅使用 value 参数时,可以省略索引和数组参数):

  1. 项目值
  2. 项目索引
  3. 数组本身
  • reduce() :方法在每个数组元素上运行函数,以生成(减少它)单个值。
  1. reduce() 方法在数组中从左到右工作。另请参见 reduceRight()。
  2. reduce() 方法不会减少原始数组。
  3. reduce() 方法能够接受一个初始值。
代码语言:javascript
复制
var numbers1 = [45, 4, 9, 16, 25];
var sum = numbers1.reduce(myFunction, 100);
function myFunction(total, value) {
  return total + value;
}

此函数接受 4 个参数:

  1. 总数(初始值/先前返回的值)
  2. 项目值
  3. 项目索引
  4. 数组本身
  • reduceRight() :(同 reduce() 方法)方法在每个数组元素上运行函数,以生成(减少它)单个值。
  1. reduceRight() 方法在数组中从左到右工作。另请参见 reduce()。
  2. reduceRight() 方法不会减少原始数组。
  3. reduceRight() 方法能够接受一个初始值。
代码语言:javascript
复制
var numbers1 = [45, 4, 9, 16, 25];
var sum = numbers1.reduceRight(myFunction);
function myFunction(total, value, index, array) {
  return total + value;
}

此函数接受 4 个参数:

  1. 总数(初始值/先前返回的值)
  2. 项目值
  3. 项目索引
  4. 数组本身
  • every() :方法检查所有数组值是否通过测试。
代码语言:javascript
复制
var numbers = [45, 4, 9, 16, 25];
var allOver18 = numbers.every(myFunction);
function myFunction(value) {
  return value > 18;
}

此函数接受 3 个参数:

  1. 项目值
  2. 项目索引
  3. 数组本身
  • some() :方法检查某些数组值是否通过了测试。
代码语言:javascript
复制
var numbers = [45, 4, 9, 16, 25];
var someOver18 = numbers.some(myFunction);
function myFunction(value, index, array) {
  return value > 18;
}

此函数接受 3 个参数:

  1. 项目值
  2. 项目索引
  3. 数组本身
  • indexOf() :方法在数组中搜索元素值并返回其位置。

语法格式:

代码语言:javascript
复制
array.indexOf(item, start)

item

必需。要检索的项目。

start

可选。从哪里开始搜索。负值将从结尾开始的给定位置开始,并搜索到结尾。

  • lastIndexOf() :与 indexOf() 类似,但是从数组结尾开始搜索。 语法格式:
代码语言:javascript
复制
array.lastIndexOf(item, start)

item

必需。要检索的项目。

start

可选。从哪里开始搜索。负值将从结尾开始的给定位置开始,并搜索到开头。

  • find() :方法返回通过测试函数的第一个数组元素的值。
代码语言:javascript
复制
var numbers = [4, 9, 16, 25, 29];
var first = numbers.find(myFunction);
function myFunction(value, index, array) {
  return value > 18;
}

此函数接受 3 个参数:

  1. 项目值
  2. 项目索引
  3. 数组本身
  • findIndex() :方法返回通过测试函数的第一个数组元素的索引。
代码语言:javascript
复制
var numbers = [4, 9, 16, 25, 29];
var first = numbers.findIndex(myFunction);
function myFunction(value, index, array) {
  return value > 18;
}

此函数接受 3 个参数:

  1. 项目值
  2. 项目索引
  3. 数组本身

4. 其他

  • delete 运算符可用于删除数组项。 【注】使用 delete 会在数组留下未定义的空洞。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-06-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 概述
    • 1.1 创建数组
      • 1.2 访问数组元素
        • 1.3 添加数组元素
          • 1.4 数组和对象的区别
          • 2. 属性
          • 3. 方法
            • 【注】以下方法老版本浏览器(比如 Internet Explorer 8 或更早的版本)不支持。
            • 4. 其他
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档