js之数组

1. 数组(重点)

思考:如何保存一个班级的所有学生的姓名? 回答:一种方法利用前面学习过的知识,则每一条信息都需要一个变量去保存,缺点是这样做很麻烦,而且容易出错,又不合理;另一种方法就是利用数组。 概念:数组是存储一系列值的变量集合,可以存储多个值。

1.1 语法

数组构成:数组由一个或多个数组元素组成的,各元素之间使用逗号“,”分割。 数组元素:每个数组元素由“索引下标”和“值”构成。

索引下标:简称下标,以数字表示,默认从0开始依次递增,用于识别元素。 值:元素的内容,可以是任意类型的数据,如数值型、字符型、数组、对象等。1.2 创建数组

两种方式创建数组:直接使用“[]”的方式和实例化Array对象的方式

使用数组直接量是创建数组最简单、最直观的方法,在方括号中将数组元素用逗号隔开即可

例如:

<span style="background-color:#f8f8f8"><span style="color:#333333"><span style="color:#770088">var</span> <span style="color:#0000ff">empty</span> <span style="color:#981a1a">=</span> []; <span style="color:#aa5500">// 没有元素的空数组</span>
​
<span style="color:#770088">var</span> <span style="color:#0000ff">num</span> <span style="color:#981a1a">=</span> [<span style="color:#116644">1</span>, <span style="color:#116644">3</span>, <span style="color:#116644">5</span>, <span style="color:#116644">7</span>, <span style="color:#116644">9</span>]; <span style="color:#aa5500">// 有 5 个数值的数组</span>
​
<span style="color:#770088">var</span> <span style="color:#0000ff">mix</span> <span style="color:#981a1a">=</span> [<span style="color:#aa1111">'Bob'</span>, <span style="color:#116644">20</span>, <span style="color:#221199">true</span>]; <span style="color:#aa5500">// 3 种不同元素的数组</span>
​</span></span>

调用构造函数 Array() 是创建数组的另一种方法。

<span style="background-color:#f8f8f8"><span style="color:#333333"><span style="color:#aa5500">// 元素值类型为字符串</span>
<span style="color:#770088">var</span> <span style="color:#0000ff">area</span> <span style="color:#981a1a">=</span> <span style="color:#770088">new</span> <span style="color:#000000">Array</span>(<span style="color:#aa1111">'Beijing'</span>, <span style="color:#aa1111">'Shanghai'</span>, <span style="color:#aa1111">'Shenzhen'</span>);
<span style="color:#aa5500">// 元素值类型为数值型</span>
<span style="color:#770088">var</span> <span style="color:#0000ff">score</span> <span style="color:#981a1a">=</span> <span style="color:#770088">new</span> <span style="color:#000000">Array</span>(<span style="color:#116644">56</span>, <span style="color:#116644">68</span>, <span style="color:#116644">98</span>, <span style="color:#116644">44</span>);
<span style="color:#aa5500">// 元素值类型为混合型</span>
<span style="color:#770088">var</span> <span style="color:#0000ff">mix</span> <span style="color:#981a1a">=</span> <span style="color:#770088">new</span> <span style="color:#000000">Array</span>(<span style="color:#116644">123</span>, <span style="color:#aa1111">'abc'</span>, <span style="color:#221199">null</span>, <span style="color:#221199">true</span>, <span style="color:#221199">undefined</span>);
<span style="color:#aa5500">// 空数组</span>
<span style="color:#770088">var</span> <span style="color:#0000ff">arr1</span> <span style="color:#981a1a">=</span> <span style="color:#770088">new</span> <span style="color:#000000">Array</span>();   <span style="color:#000000">或</span>    <span style="color:#770088">var</span> <span style="color:#0000ff">arr2</span> <span style="color:#981a1a">=</span> <span style="color:#770088">new</span> <span style="color:#000000">Array</span>; <span style="color:#aa5500">//等同于数组直接量 [ ]</span>
<span style="color:#aa5500">// 指定长度的数组</span>
<span style="color:#770088">var</span> <span style="color:#0000ff">len</span> <span style="color:#981a1a">=</span> <span style="color:#770088">new</span> <span style="color:#000000">Array</span>(<span style="color:#116644">5</span>); <span style="color:#aa5500">//这种方式用来创建指定长度的数组。当预先知道所需元素个数时,这种方式可以用来预先分配一个数组空间。注意,数组中没有存储值,不能认为它是包含 5个值为 undefined 元素的数组</span>
<span style="color:#aa5500">//含有3个空储存位置</span>
<span style="color:#770088">var</span> <span style="color:#0000ff">emptyPlace1</span> <span style="color:#981a1a">=</span> [<span style="color:#aa1111">'abc'</span>, , , ,<span style="color:#aa1111">'123'</span>]; 
<span style="color:#aa5500">//会报语法错误</span>
<span style="color:#770088">var</span> <span style="color:#0000ff">emptyPlace2</span> <span style="color:#981a1a">=</span> <span style="color:#770088">new</span> <span style="color:#000000">Array</span>(<span style="color:#116644">56</span>, <span style="color:#116644">68</span>, , , ,<span style="color:#116644">98</span>);</span></span>

注意:

1.在创建数组时,最后一个元素后的逗号可以省略,也可以存在。 2.直接法“[]”与Array()对象在创建数组时的区别在于,前者可以创建含有空存储位置的数组,而后者不可以。

1.3 访问和修改数组元素

数组创建完成后,我们可以 [ ] 操作符访问数组中的元素,数组的引用位于方括号左边。 方括号中是一个返回非负整数的任意表达式。使用该语法即可以访问数组中的元素,又可以修改数组中的元素。

<span style="background-color:#f8f8f8"><span style="color:#333333"><span style="color:#770088">var</span> <span style="color:#0000ff">letters</span> <span style="color:#981a1a">=</span> [<span style="color:#aa1111">'a'</span>, <span style="color:#aa1111">'b'</span>, <span style="color:#aa1111">'c'</span>, <span style="color:#aa1111">'d'</span>];
​
<span style="color:#000000">console</span>.<span style="color:#000000">log</span>(<span style="color:#000000">letters</span>[<span style="color:#116644">0</span>]); <span style="color:#aa5500">// 访问索引为 0 的元素 'a'</span>
​
<span style="color:#000000">console</span>.<span style="color:#000000">log</span>(<span style="color:#000000">letters</span>[<span style="color:#116644">4</span> <span style="color:#981a1a">-</span> <span style="color:#116644">2</span>]); <span style="color:#aa5500">// 访问索引为 2 的元素 'c'</span>
​
<span style="color:#000000">letters</span>[<span style="color:#116644">1</span>] <span style="color:#981a1a">=</span> <span style="color:#116644">1</span>; <span style="color:#aa5500">// 修改索引为 1 的元素 ['a', 1, 'c', 'd']</span>
​
<span style="color:#000000">letters</span>[<span style="color:#116644">1</span> <span style="color:#981a1a">+</span> <span style="color:#116644">2</span>] <span style="color:#981a1a">=</span> <span style="color:#116644">3</span>; <span style="color:#aa5500">// 修改索引为 3 的元素 ['a', 1, 'c', 3]</span></span></span>
  • 根据下标添加和修改

<span style="background-color:#f8f8f8"><span style="color:#333333"><span style="color:#770088">var</span> <span style="color:#0000ff">arr</span> <span style="color:#981a1a">=</span> [<span style="color:#aa1111">'Asa'</span>,<span style="color:#aa1111">'Taylor'</span>];
<span style="color:#000000">arr</span>[<span style="color:#116644">2</span>] <span style="color:#981a1a">=</span> <span style="color:#aa1111">'Tom'</span>;
<span style="color:#000000">arr</span>[<span style="color:#116644">3</span>] <span style="color:#981a1a">=</span>  <span style="color:#aa1111">'Jack'</span>;
<span style="color:#000000">console</span>.<span style="color:#000000">log</span>(<span style="color:#000000">arr</span>); </span></span>
  • delete关键字只能删除数组中指定下标的元素值,删除后该元素依然会占用一个空的存储位置。

<span style="background-color:#f8f8f8"><span style="color:#333333">  <span style="color:#770088">var</span> <span style="color:#0000ff">stu</span> <span style="color:#981a1a">=</span> [<span style="color:#aa1111">'Tom'</span>, <span style="color:#aa1111">'Jimmy'</span>, <span style="color:#aa1111">'Lucy'</span>];
  <span style="color:#000000">console</span>.<span style="color:#000000">log</span>(<span style="color:#000000">stu</span>); <span style="color:#aa5500">// 输出结果:(3) ["Tom", "Jimmy", "Lucy"]</span>
  <span style="color:#770088">delete</span> <span style="color:#000000">stu</span>[<span style="color:#116644">1</span>];    <span style="color:#aa5500">// 删除数组中第2个元素</span>
  <span style="color:#000000">console</span>.<span style="color:#000000">log</span>(<span style="color:#000000">stu</span>); <span style="color:#aa5500">// 输出结果:(3) ["Tom", empty, "Lucy"]</span></span></span>

1.4 数组长度

每个数组都有一个 length 属性,length 属性值代表数组中元素的个数。

<span style="background-color:#f8f8f8"><span style="color:#333333"><span style="color:#770088">var</span> <span style="color:#0000ff">empty</span> <span style="color:#981a1a">=</span> []; <span style="color:#aa5500">// 数组没有元素</span>
​
<span style="color:#770088">var</span> <span style="color:#0000ff">letters</span> <span style="color:#981a1a">=</span> [<span style="color:#aa1111">'a'</span>, <span style="color:#aa1111">'b'</span>, <span style="color:#aa1111">'c'</span>, <span style="color:#aa1111">'d'</span>]; <span style="color:#aa5500">// 数组有 5 个元素</span>
​
<span style="color:#770088">var</span> <span style="color:#0000ff">arr</span> <span style="color:#981a1a">=</span> [<span style="color:#aa1111">'a'</span>, , , , <span style="color:#aa1111">'b'</span>, <span style="color:#aa1111">'c'</span>];
​
<span style="color:#000000">console</span>.<span style="color:#000000">log</span>(<span style="color:#000000">empty</span>.<span style="color:#000000">length</span>); <span style="color:#aa5500">// 0</span>
​
<span style="color:#000000">console</span>.<span style="color:#000000">log</span>(<span style="color:#000000">letters</span>.<span style="color:#000000">length</span>); <span style="color:#aa5500">// 5</span>
​
<span style="color:#000000">console</span>.<span style="color:#000000">log</span>(<span style="color:#000000">arr</span>.<span style="color:#000000">length</span>); <span style="color:#aa5500">// 6</span>
​</span></span>
  • 修改数组长度

  • 大于数组长度

<span style="background-color:#f8f8f8"><span style="color:#333333"><span style="color:#770088">var</span> <span style="color:#0000ff">arr1</span> <span style="color:#981a1a">=</span> [];
<span style="color:#000000">arr1</span>.<span style="color:#000000">length</span> <span style="color:#981a1a">=</span> <span style="color:#116644">5</span>;
<span style="color:#000000">console</span>.<span style="color:#000000">log</span>(<span style="color:#000000">arr1</span>);      <span style="color:#aa5500">// 输出结果:(5) [empty × 5]</span>
<span style="color:#770088">var</span> <span style="color:#0000ff">arr2</span> <span style="color:#981a1a">=</span> [<span style="color:#116644">1</span>, <span style="color:#116644">2</span>, <span style="color:#116644">3</span>];
<span style="color:#000000">arr2</span>.<span style="color:#000000">length</span> <span style="color:#981a1a">=</span> <span style="color:#116644">4</span>; 
<span style="color:#000000">console</span>.<span style="color:#000000">log</span>(<span style="color:#000000">arr2</span>);      <span style="color:#aa5500">// 输出结果:(4) [1, 2, 3, empty]</span>
​</span></span>
  • 小于数组长度

    <span style="background-color:#f8f8f8"><span style="color:#770088">var</span> <span style="color:#0000ff">arr4</span> <span style="color:#981a1a">=</span> [<span style="color:#aa1111">'hehe'</span>, <span style="color:#aa1111">'xixi'</span>, <span style="color:#aa1111">'gugu'</span>, <span style="color:#aa1111">'jiujiu'</span>];
    <span style="color:#000000">arr4</span>.<span style="color:#000000">length</span> <span style="color:#981a1a">=</span> <span style="color:#116644">3</span>; 
    <span style="color:#000000">console</span>.<span style="color:#000000">log</span>(<span style="color:#000000">arr4</span>);      <span style="color:#aa5500">// 输出结果:(3) ["hehe", "xixi", "gugu"]</span></span>

1.5 数组遍历数组

在创建完数组后,如何遍历数组中的元素,对其进行操作呢? 一维数组可以利用for、forEach、for…of进行遍历,目前先介绍for,之后我们再学习其他.

  • 使用 for 循环遍历数组

    <span style="background-color:#f8f8f8"><span style="color:#770088">var</span> <span style="color:#0000ff">heroes</span> <span style="color:#981a1a">=</span> [<span style="color:#aa1111">'刘邦'</span>, <span style="color:#aa1111">'张良'</span>, <span style="color:#aa1111">'韩信'</span>, <span style="color:#aa1111">'萧何'</span>,<span style="color:#aa1111">'刘备'</span>];
    ​
    <span style="color:#770088">var</span> <span style="color:#0000ff">len</span> <span style="color:#981a1a">=</span> <span style="color:#000000">heroes</span>.<span style="color:#000000">length</span>;
    ​
    <span style="color:#770088">for</span> (<span style="color:#770088">var</span> <span style="color:#0000ff">i</span> <span style="color:#981a1a">=</span> <span style="color:#116644">0</span>; <span style="color:#0055aa">i</span> <span style="color:#981a1a"><</span> <span style="color:#000000">len</span>; <span style="color:#0055aa">i</span><span style="color:#981a1a">++</span>) {
    ​
        <span style="color:#000000">console</span>.<span style="color:#000000">log</span>(<span style="color:#000000">heroes</span>[<span style="color:#0055aa">i</span>])
    ​
    }</span>

1.6 二维数组

  • 数组还可以根据维数划分为一维数组、二维数组、三维数组等多维数组。

  • 解决开始提出的问题:保存一个班级学生信息,每个数组元素都代表一个学生,而每个学生都使用一个一维数组分别表示其姓名、学号、年龄等信息,这样通过一个变量即可有规律的保存一个班级的所有学生信息,方便开发时进行处理。 二维数组:是指数组元素的“值”是一个一维数组,如下图。

  • 创建

<span style="background-color:#f8f8f8"><span style="color:#333333"><span style="color:#aa5500">// 使用“[]”创建数组</span>
<span style="color:#770088">var</span> <span style="color:#0000ff">num</span> <span style="color:#981a1a">=</span> [[<span style="color:#116644">1</span>, <span style="color:#116644">3</span>], [<span style="color:#116644">2</span>, <span style="color:#116644">4</span>]];
<span style="color:#770088">var</span> <span style="color:#0000ff">empty</span> <span style="color:#981a1a">=</span> [[], []];                   <span style="color:#aa5500">// 空二维数组</span>
<span style="color:#aa5500">// 使用Array对象创建数组</span>
<span style="color:#770088">var</span> <span style="color:#0000ff">info</span> <span style="color:#981a1a">=</span> <span style="color:#770088">new</span> <span style="color:#000000">Array</span>(<span style="color:#770088">new</span> <span style="color:#000000">Array</span>(<span style="color:#aa1111">'Tom'</span>, <span style="color:#116644">13</span>, <span style="color:#116644">155</span>), <span style="color:#770088">new</span> <span style="color:#000000">Array</span>(<span style="color:#aa1111">'Lucy'</span>, <span style="color:#116644">11</span>, <span style="color:#116644">152</span>));
<span style="color:#770088">var</span> <span style="color:#0000ff">arr</span> <span style="color:#981a1a">=</span> <span style="color:#770088">new</span> <span style="color:#000000">Array</span>(<span style="color:#770088">new</span> <span style="color:#000000">Array</span>, <span style="color:#770088">new</span> <span style="color:#000000">Array</span>);<span style="color:#aa5500">// 空二维数组</span></span></span>
  • 二维数组遍历

    二维数组只需在遍历数组后,再次遍历数组的元素即可。

    <span style="background-color:#f8f8f8"><span style="color:#770088">var</span> <span style="color:#0000ff">arr</span> <span style="color:#981a1a">=</span> [[<span style="color:#116644">1</span>, <span style="color:#116644">2</span>, <span style="color:#116644">3</span>], [<span style="color:#116644">4</span>, <span style="color:#116644">5</span>, <span style="color:#116644">6</span>], [<span style="color:#116644">7</span>, <span style="color:#116644">8</span>, <span style="color:#116644">9</span>, <span style="color:#116644">0</span>]];
    <span style="color:#aa5500">// 遍历外层</span>
    <span style="color:#770088">for</span> (<span style="color:#770088">var</span> <span style="color:#0000ff">i</span> <span style="color:#981a1a">=</span> <span style="color:#116644">0</span>; <span style="color:#0055aa">i</span> <span style="color:#981a1a"><</span> <span style="color:#000000">arr</span>.<span style="color:#000000">length</span>; <span style="color:#0055aa">i</span><span style="color:#981a1a">++</span>) {
        <span style="color:#aa5500">// console.log(arr[i]);</span>
        <span style="color:#aa5500">// 遍历里层</span>
        <span style="color:#770088">for</span> (<span style="color:#770088">var</span> <span style="color:#0000ff">j</span> <span style="color:#981a1a">=</span> <span style="color:#116644">0</span>; <span style="color:#0055aa">j</span> <span style="color:#981a1a"><</span> <span style="color:#000000">arr</span>[<span style="color:#0055aa">i</span>].<span style="color:#000000">length</span>; <span style="color:#0055aa">j</span><span style="color:#981a1a">++</span>) {
            <span style="color:#000000">console</span>.<span style="color:#000000">log</span>(<span style="color:#000000">arr</span>[<span style="color:#0055aa">i</span>][<span style="color:#0055aa">j</span>]);
        }
    }</span>

1.7 数组排序(重点)

1.7.1 最大值和最小值

<span style="background-color:#f8f8f8"><span style="color:#333333">​
    <span style="color:#770088">if</span> (<span style="color:#000000">arr</span>[<span style="color:#000000">i</span>] <span style="color:#981a1a">></span> <span style="color:#000000">max</span>) {    <span style="color:#aa5500">// 当前元素比最大值max大,则修改最大值</span>
      <span style="color:#000000">max</span> <span style="color:#981a1a">=</span> <span style="color:#000000">arr</span>[<span style="color:#000000">i</span>];
    }
    <span style="color:#770088">if</span> (<span style="color:#000000">arr</span>[<span style="color:#000000">i</span>] <span style="color:#981a1a"><</span> <span style="color:#000000">min</span>) {    <span style="color:#aa5500">// 当前元素比最小值min小,则修改最小值</span>
      <span style="color:#000000">min</span> <span style="color:#981a1a">=</span> <span style="color:#000000">arr</span>[<span style="color:#000000">i</span>];
    }</span></span>

1.7.2 冒泡排序

实现原理:在冒泡排序的过程中,按照要求从小到大排序或从大到小排序,不断比较数组中相邻两个元素的值,将值大的元素或最小的元素交换至右端。

1. 算法步骤

比较相邻的元素。如果第一个比第二个大,就交换他们两个。

对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。

针对所有的元素重复以上的步骤,除了最后一个。

持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

2. 动图演示

img

<span style="background-color:#f8f8f8"><span style="color:#333333"> <span style="color:#770088">var</span> <span style="color:#0000ff">arr</span> <span style="color:#981a1a">=</span> [<span style="color:#116644">10</span>, <span style="color:#116644">2</span>, <span style="color:#116644">5</span>, <span style="color:#116644">27</span>, <span style="color:#116644">98</span>, <span style="color:#116644">31</span>];
  <span style="color:#000000">console</span>.<span style="color:#000000">log</span>(<span style="color:#aa1111">'待排序数组:'</span> <span style="color:#981a1a">+</span> <span style="color:#000000">arr</span>);
  <span style="color:#770088">for</span> (<span style="color:#770088">var</span> <span style="color:#0000ff">i</span> <span style="color:#981a1a">=</span> <span style="color:#116644">0</span>; <span style="color:#0055aa">i</span> <span style="color:#981a1a"><</span> <span style="color:#000000">arr</span>.<span style="color:#000000">length</span><span style="color:#981a1a">-</span><span style="color:#116644">1</span>; <span style="color:#0055aa">i</span><span style="color:#981a1a">++</span>) {          <span style="color:#aa5500">// 控制需要比较的轮数</span>
    <span style="color:#770088">for</span> (<span style="color:#770088">var</span> <span style="color:#0000ff">j</span> <span style="color:#981a1a">=</span> <span style="color:#116644">0</span>; <span style="color:#0055aa">j</span> <span style="color:#981a1a"><</span> <span style="color:#000000">arr</span>.<span style="color:#000000">length</span> <span style="color:#981a1a">-</span> <span style="color:#0055aa">i</span><span style="color:#981a1a">-</span><span style="color:#116644">1</span>; <span style="color:#0055aa">j</span><span style="color:#981a1a">++</span>) {    <span style="color:#aa5500">// 控制参与比较的元素</span>
      <span style="color:#770088">if</span> (<span style="color:#000000">arr</span>[<span style="color:#0055aa">j</span>] <span style="color:#981a1a">></span> <span style="color:#000000">arr</span>[<span style="color:#0055aa">j</span> <span style="color:#981a1a">+</span> <span style="color:#116644">1</span>]) {                  <span style="color:#aa5500">// 比较相邻的两个元素</span>
        [<span style="color:#000000">arr</span>[<span style="color:#0055aa">j</span>], <span style="color:#000000">arr</span>[<span style="color:#0055aa">j</span> <span style="color:#981a1a">+</span> <span style="color:#116644">1</span>]] <span style="color:#981a1a">=</span> [<span style="color:#000000">arr</span>[<span style="color:#0055aa">j</span> <span style="color:#981a1a">+</span> <span style="color:#116644">1</span>], <span style="color:#000000">arr</span>[<span style="color:#0055aa">j</span>]];<span style="color:#aa5500">//解构交换</span>
      }
    }
  }
  <span style="color:#000000">console</span>.<span style="color:#000000">log</span>(<span style="color:#aa1111">'排序后的数组:'</span> <span style="color:#981a1a">+</span> <span style="color:#000000">arr</span>);</span></span>
<span style="background-color:#f8f8f8"><span style="color:#333333"> <span style="color:#aa5500">//两个变量值的交换---》面试题</span>
​
  <span style="color:#770088">var</span> <span style="color:#0000ff">temp</span><span style="color:#981a1a">=</span><span style="color:#221199">null</span>; <span style="color:#aa5500">//定义一个第三方的变量</span>
  <span style="color:#000000">temp</span><span style="color:#981a1a">=</span><span style="color:#000000">num1</span>  <span style="color:#aa5500">//temp=10</span>
  <span style="color:#000000">num1</span><span style="color:#981a1a">=</span><span style="color:#000000">num2</span>  <span style="color:#aa5500">//num1=100</span>
  <span style="color:#000000">num2</span><span style="color:#981a1a">=</span><span style="color:#000000">temp</span>  <span style="color:#aa5500">//num2=10</span>
  </span></span>

1.7.3 选择排序

1. 算法步骤

首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置。

再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。

重复第二步,直到所有元素均排序完毕。

2. 动图演示

img

<span style="background-color:#f8f8f8"><span style="color:#333333"><span style="color:#aa5500">//选择排序</span>
<span style="color:#770088">var</span> <span style="color:#0000ff">arr</span><span style="color:#981a1a">=</span> [<span style="color:#116644">10</span>, <span style="color:#116644">2</span>, <span style="color:#116644">5</span>, <span style="color:#116644">27</span>, <span style="color:#116644">98</span>, <span style="color:#116644">31</span>];
    <span style="color:#770088">var</span> <span style="color:#0000ff">len</span> <span style="color:#981a1a">=</span> <span style="color:#000000">arr</span>.<span style="color:#000000">length</span>;
    <span style="color:#770088">var</span> <span style="color:#0000ff">minIndex</span>, <span style="color:#0000ff">temp</span>;
    <span style="color:#770088">for</span> (<span style="color:#770088">var</span> <span style="color:#0000ff">i</span> <span style="color:#981a1a">=</span> <span style="color:#116644">0</span>; <span style="color:#0055aa">i</span> <span style="color:#981a1a"><</span> <span style="color:#000000">len</span> <span style="color:#981a1a">-</span> <span style="color:#116644">1</span>; <span style="color:#0055aa">i</span><span style="color:#981a1a">++</span>) {
        <span style="color:#000000">minIndex</span> <span style="color:#981a1a">=</span> <span style="color:#0055aa">i</span>;
        <span style="color:#770088">for</span> (<span style="color:#770088">var</span> <span style="color:#0000ff">j</span> <span style="color:#981a1a">=</span> <span style="color:#0055aa">i</span> <span style="color:#981a1a">+</span> <span style="color:#116644">1</span>; <span style="color:#0055aa">j</span> <span style="color:#981a1a"><</span> <span style="color:#000000">len</span>; <span style="color:#0055aa">j</span><span style="color:#981a1a">++</span>) {
            <span style="color:#770088">if</span> (<span style="color:#000000">arr</span>[<span style="color:#0055aa">j</span>] <span style="color:#981a1a"><</span> <span style="color:#000000">arr</span>[<span style="color:#000000">minIndex</span>]) {     <span style="color:#aa5500">// 寻找最小的数</span>
                <span style="color:#000000">minIndex</span> <span style="color:#981a1a">=</span> <span style="color:#0055aa">j</span>;                 <span style="color:#aa5500">// 将最小数的索引保存</span>
            }
        }
        <span style="color:#000000">temp</span> <span style="color:#981a1a">=</span> <span style="color:#000000">arr</span>[<span style="color:#0055aa">i</span>];
        <span style="color:#000000">arr</span>[<span style="color:#0055aa">i</span>] <span style="color:#981a1a">=</span> <span style="color:#000000">arr</span>[<span style="color:#000000">minIndex</span>];
        <span style="color:#000000">arr</span>[<span style="color:#000000">minIndex</span>] <span style="color:#981a1a">=</span> <span style="color:#000000">temp</span>;
    }
     <span style="color:#000000">console</span>.<span style="color:#000000">log</span>(<span style="color:#aa1111">'排序后的数组:'</span><span style="color:#981a1a">+</span><span style="color:#000000">arr</span>);
  </span></span>

2.数组操作方法(重点)

学习数组的方法要关注以下3个重点:

  • 方法参数

  • 返回值

  • 改变不改变原数组

2.1 栈方法和队列方法

2.1.1 push()

push()
功能描述将一个或多个元素添加到数组的末尾
语法arr.push(element1, ..., elementN)
参数被添加到数组末尾的元素。
返回值返回数组的新长度。
改不改变原数组改变原数组

2.1.2 pop()

pop()
功能描述从数组的末尾删除一个元素。
语法arr.pop()
参数
返回值返回数组中删除的元素,若是空数组则返回undefined
改不改变原数组改变原数组

2.1.3 unshift()

unshift()
功能描述将一个或多个元素添加到数组的开头
语法arr.unshift(element1, ..., elementN)
参数要添加到数组开头的元素或多个元素。
返回值返回数组的新长度。
改不改变原数组改变原数组

2.1.4 shift()

shift()
功能描述从数组的开头删除一个元素。
语法arr.shift()
参数
返回值返回数组中删除的元素,若是空数组则返回undefined
改不改变原数组改变原数组
  • 栈结构特点:先进后出 push(),pop();

  • 队列结构特点:先进先出 unshift(),shift();

2.2 检索方法

2.2.1 includes()

includes()
功能描述用于确定数组中是否含有某个元素。
语法array.includes(item, [start])
参数item是查找的元素,start可选,规定在数组中开始检索的位置(包含本身的位置)。
返回值true或false。
改不改变原数组不改变原数组
不同参数情况分析:
  • 如果start为负值,则从最后一项开始算起,-1为最后一项,-2为倒数第二项。

  • 如果 array.length + start为负值,则整个数组都会被搜索。

  • 如果start大于等于数组长度 ,则返回 false 。该数组不会被搜索。

2.2.2 indexOf()

indexOf()
功能描述检测当前值在数组中第一次出现的位置索引。
语法indexOf(item,[start])
参数item是查找的元素,start可选,规定在数组中开始检索的位置(包含本身的位置)。
返回值返回值是在数组中可以找到给定值的第一个索引,如果不存在,则返回-1。
改不改变原数组不改变原数组

不同参数情况分析:

  • 如果start为负值,则从最后一项开始算起,-1为最后一项,-2为倒数第二项。

  • 如果 array.length + start为负值,则整个数组都会被搜索。

  • 如果start大于等于数组长度 ,则返回-1 。该数组不会被搜索。

2.2.3 lastIndexOf()

lastIndexOf()
功能描述检测当前值在数组中最后一次出现的位置索引,从数组的后面向前查找,从 start处开始。
语法lastIndexOf(item,[start])
参数item是查找的元素,start可选,规定在数组中开始检索的位置(包含本身的位置)。
返回值返回指定元素在数组中的最后一个的索引,如果不存在则返回 -1。
改不改变原数组不改变原数组

不同参数情况分析:

  • 如果start为负值,则从最后一项开始算起,-1为最后一项,-2为倒数第二项。

  • 如果 array.length + start为负值,则该数组不会被搜索,则返回 -1。

  • 如果start大于等于数组长度 ,则整个数组都会被搜索。

2.3 数组转字符串

2.3.1 join()

join()
功能描述将数组的所有元素连接到一个字符串中。
语法arr.join([separator])
参数指定一个字符串来分隔数组的每个元素。 如果缺省该值,数组元素用逗号(,)分隔。 如果separator是空字符串 (""),则所有元素之间都没有任何字符。
返回值一个所有数组元素连接的字符串。如果 arr.length 为 0,则返回空字符串。
改不改变原数组不改变原数组

2.3.2 toString()

toString()
功能描述返回包含所有数组值的字符串,以逗号分隔。
语法arr.toString()
参数
返回值一个表示指定的数组及其元素的字符串。
改不改变原数组不改变原数组

注意:

  1. join()和toString()方法的相同点:

可将多维数组转为字符串,默认情况下使用逗号连接。 当数组元素为undefined、null或空数组时,数组会被转换为空字符串

  1. join()和toString()方法的不同点:

join()方法可以指定连接数组元素的符号

2.4 其他方法

2.4.1 Array.isArray()

Array.isArray()
功能描述用于确定传递的值是否是一个数组。
语法Array.isArray(obj)
参数需要检测的值
返回值如果值是 Array,则为 true;否则为 false
改不改变原数组不改变原数组

2.4.2 splice()(重点)

splice()
功能描述通过删除或者替换(修改)现有元素或者原地添加新的元素来修改数组。
语法array.splice(index[, deleteCount[, item1[, item2[, ...]]]])
参数index:必需。规定从何处添加/删除元素。 该参数是开始插入和(或)删除的数组元素的下标,必须是数字。 deleteCount:表示要移除的数组元素的个数。 item1, item2, ...:要添加进数组的元素。
返回值以数组形式返回被修改的内容。
改不改变原数组改变原数组

不同参数情况分析:

对数组进行增删改

  • 增加:arr.splice(index, 0, item)

    • 从索引index开始, deleteCount(可选):0

    • 把item或者更多的内容插入到索引index的前面

    • 返回值:返回空数组

  • 修改: arr.splice(index, x, item)

    • 从索引index开始,删除x个元素, item替换删除的部分

    • 把原有内容删除掉, 然后用新内容替换掉

    • 返回值:修改掉原有内容的数组

  • 删除:arr.splice(index,x)

    • 从索引index开始,删除x个元素

    • (如果第二个参数省略, 则从index删除到末尾)

    • 返回值:删除掉原有内容的数组

<span style="background-color:#f8f8f8"><span style="color:#333333"><span style="color:#aa5500">//增加</span>
<span style="color:#770088">var</span> <span style="color:#0000ff">ary1</span> <span style="color:#981a1a">=</span> [<span style="color:#116644">33</span>,<span style="color:#116644">44</span>,<span style="color:#116644">55</span>,<span style="color:#116644">66</span>,<span style="color:#116644">77</span>,<span style="color:#116644">88</span>];
<span style="color:#000000">ary1</span>.<span style="color:#000000">splice</span>(<span style="color:#116644">2</span>,<span style="color:#116644">0</span>,<span style="color:#aa1111">'a'</span>,<span style="color:#aa1111">'b'</span>)
<span style="color:#000000">console</span>.<span style="color:#000000">log</span>(<span style="color:#000000">ary1</span>);<span style="color:#aa5500">// [33, 44, "a", "b", 55, 66, 77, 88]</span>
​
<span style="color:#aa5500">//修改</span>
<span style="color:#770088">var</span> <span style="color:#0000ff">ary2</span> <span style="color:#981a1a">=</span> [<span style="color:#116644">33</span>,<span style="color:#116644">44</span>,<span style="color:#116644">55</span>,<span style="color:#116644">66</span>,<span style="color:#116644">77</span>,<span style="color:#116644">88</span>];
<span style="color:#000000">ary2</span>.<span style="color:#000000">splice</span>(<span style="color:#116644">1</span>,<span style="color:#116644">2</span>,<span style="color:#aa1111">'x'</span>,<span style="color:#aa1111">'y'</span>)
<span style="color:#000000">console</span>.<span style="color:#000000">log</span>(<span style="color:#000000">ary2</span>);<span style="color:#aa5500">// [33, "x", "y", 66, 77, 88]</span>
​
<span style="color:#aa5500">//删除</span>
<span style="color:#770088">var</span> <span style="color:#0000ff">ary3</span> <span style="color:#981a1a">=</span> [<span style="color:#116644">33</span>,<span style="color:#116644">44</span>,<span style="color:#116644">55</span>,<span style="color:#116644">66</span>,<span style="color:#116644">77</span>,<span style="color:#116644">88</span>];
<span style="color:#aa5500">//console.log(ary3.splice(3,2))//[66, 77]</span>
<span style="color:#000000">console</span>.<span style="color:#000000">log</span>(<span style="color:#000000">ary3</span>.<span style="color:#000000">splice</span>(<span style="color:#116644">3</span>));<span style="color:#aa5500">//[66, 77, 88]</span>
<span style="color:#000000">console</span>.<span style="color:#000000">log</span>(<span style="color:#000000">ary3</span>.<span style="color:#000000">splice</span>(<span style="color:#116644">0</span>));<span style="color:#aa5500">//[33,44,55,66,77,88]</span></span></span>

2.4.3 slice()

slice()
功能描述复制原数组的部分内容。
语法array.slice(start, end)
参数start:可选。规定从何处开始选取。 如果是负数,那么它规定从数组尾部开始算起的位置。 也就是说,-1 指最后一个元素,-2 指倒数第二个元素,以此类推。如果省略 start,则 slice 从索引 0 开始。 end:可选。规定从何处结束选取。该参数是数组片断结束处的数组下标。 如果没有指定该参数,那么切分的数组包含从 start 到数组结束的所有元素。 如果这个参数是负数,那么它规定的是从数组尾部开始算起的元素。(不包含end)
返回值返回一个含有被提取元素的新数组。
改不改变原数组不改变原数组

不同参数情况分析:

array.slice(start, end),从索引start开始查找到end处(不包含end)

array.slice(start) 第二个参数省略,则一直查找到末尾

array.slice(0)原样输出内容,可以实现数组克隆

array.slice(-start,-end) slice支持负参数,从最后一项开始算起,-1为最后一项,-2为倒数第二项

<span style="background-color:#f8f8f8"><span style="color:#333333"><span style="color:#770088">var</span> <span style="color:#0000ff">ary1</span> <span style="color:#981a1a">=</span> [<span style="color:#116644">1</span>,<span style="color:#116644">2</span>,<span style="color:#116644">3</span>,<span style="color:#116644">4</span>,<span style="color:#116644">5</span>,<span style="color:#116644">6</span>,<span style="color:#116644">7</span>,<span style="color:#116644">8</span>,<span style="color:#116644">9</span>];
 <span style="color:#aa5500">//console.log(ary1.slice(2,8));//从索引2开始查找到索引为8的内容,结果为[3, 4, 5, 6, 7, 8]</span>
 <span style="color:#aa5500">//console.log(ary1.slice(0));</span>
 <span style="color:#000000">console</span>.<span style="color:#000000">log</span>(<span style="color:#000000">ary1</span>.<span style="color:#000000">slice</span>(<span style="color:#981a1a">-</span><span style="color:#116644">2</span>,<span style="color:#981a1a">-</span><span style="color:#116644">1</span>));<span style="color:#aa5500">//[8]</span></span></span>

2.4.5 reverse()

reverse()
功能描述数组中元素的位置颠倒,并返回该数组。
语法arr.reverse()
参数
返回值颠倒后的数组。
改不改变原数组改变原数组
<span style="background-color:#f8f8f8"><span style="color:#333333"><span style="color:#770088">var</span> <span style="color:#0000ff">ary1</span> <span style="color:#981a1a">=</span> [<span style="color:#116644">6</span>,<span style="color:#116644">8</span>,<span style="color:#116644">10</span>,<span style="color:#116644">12</span>]; 
<span style="color:#000000">console</span>.<span style="color:#000000">log</span>(<span style="color:#000000">ary1</span>.<span style="color:#000000">reverse</span>());<span style="color:#aa5500">//[12, 10, 8, 6]</span></span></span>

2.4.6 concat()

concat()
功能描述用于连接两个或多个数组。
语法concat(value1[, value2[, ...[, valueN]]])
参数value可选,参数可以是具体的值,也可以是数组对象。可以是任意多个
返回值返回连接后的新数组。
改不改变原数组不改变原数组
<span style="background-color:#f8f8f8"><span style="color:#333333"><span style="color:#770088">var</span> <span style="color:#0000ff">ary1</span> <span style="color:#981a1a">=</span> [<span style="color:#aa1111">'你'</span>];
<span style="color:#770088">var</span> <span style="color:#0000ff">ary2</span> <span style="color:#981a1a">=</span> <span style="color:#000000">ary1</span>.<span style="color:#000000">concat</span>(<span style="color:#aa1111">'好'</span>);
<span style="color:#000000">console</span>.<span style="color:#000000">log</span>(<span style="color:#000000">ary2</span>);<span style="color:#aa5500">//["你", "好"]</span></span></span>

2.5 清空数组(内容)

<span style="background-color:#f8f8f8"><span style="color:#333333"><span style="color:#aa5500">// 方式1 推荐 </span>
<span style="color:#000000">arr</span> <span style="color:#981a1a">=</span> [];
<span style="color:#aa5500">// 方式2 </span>
<span style="color:#000000">arr</span>.<span style="color:#000000">length</span> <span style="color:#981a1a">=</span> <span style="color:#116644">0</span>;
<span style="color:#aa5500">// 方式3</span>
<span style="color:#000000">arr</span>.<span style="color:#000000">splice</span>(<span style="color:#116644">0</span>, <span style="color:#000000">arr</span>.<span style="color:#000000">length</span>);
<span style="color:#000000">arr</span>.<span style="color:#000000">splice</span>(<span style="color:#116644">0</span>);</span></span>

2.6 数组方法总结

改变原数组方法
arr.push()将一个或多个元素添加到数组的末尾
arr.pop()从数组的末尾删除一个元素。
arr.unshift()将一个或多个元素添加到数组的开头
arr.shift()从数组的开头删除一个元素。
arr.splice()通过删除或者替换现有元素或者原地添加新的元素来修改数组。
arr.reverse()数组中元素的位置颠倒,并返回该数组。
不改变原数组方法
arr.includes()用于确定数组中是否含有某个元素。
arr.indexOf()检测当前值在数组中第一次出现的位置索引。
arr.lastIndexOf()检测当前值在数组中最后一次出现的位置索引,从数组的后面向前查找,从 start处开始。
arr.join()将数组的所有元素连接到一个字符串中。
arr.toString()返回包含所有数组值的字符串,以逗号分隔。
arr.slice()复制原数组的部分内容。
arr.concat()用于连接两个或多个数组。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值