16-数组

06-数组

数组(Array)是属于**内置对象  **
**
数组中的元素可以是任意的数据类型,也可以是对象,也可以是函数,也可以是数组。数组的元素中,如果存放的是数组,这种数组就是二维数组。

js数组内可以放多个不同类型的值,不会报错,但建议放同一个类型的~!
相关链接
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array

一、创建数组

1.数组字面量
var arr1 = []; // 创建一个空的数组

var arr2 = [1,2,3]; // 创建带初始值的数组
2.构造函数创建数组
var arr = new Array(参数);
  • 参数为空,代表一个空数组
  • 参数是一个值,代表的是 数组长度 ,而不是数组值
  • 参数是多个值,才是数组元素
  <script>
    var arr = new Array();
    var arr1 = new Array(3);
    var arr2 = new Array(3, 2, 1);
    console.log(arr);
    console.log(arr1);
    console.log(arr2);
  </script>

二、数组的索引

索引 (下标) :用来访问数组元素的序号,代表的是数组中的元素在数组中的位置(下标从 0 开始算起)

  • 获取元素在数组中的索引值
    • 数组中没有该元素,就返回-1
    var arr2 = new Array(3, 2, 1);
    // 获取元素在数组中的索引值
    console.log(arr2.indexOf(1));//2
    console.log(arr2.indexOf(8));//-1

通过索引值操作数组

    • arr[arr.length]
    • arr[索引] = null   ->  假删除,只会清空值
    • arr[索引] = 新值;
    • arr[索引]

三、数组的长度

可以使用length属性来获取数组的长度(即“元素的个数”)。
数组的长度 = 数组的最大索引 + 1

数组的长度可修改

    var arr3 = [1, 2, 3, 4];

    arr3.length = 5;
    console.log(arr3);

四、遍历数组

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

es6遍历

    // 遍历数组
    var arr7 = [555, 666, 999];
    // 遍历数组的索引
    for (let index of arr7.keys()) {
      console.log(index);
    }
    // 0
    // 1
    // 2

    // 遍历数组中的元素
    for (let elem of arr7.values()) {
      console.log(elem);
    }
    // 555
    // 666
    // 999

    // 遍历数组的索引和元素
    for (let [index, elem] of arr7.entries()) {
      console.log(index, elem);
    }
    // 0 555
    // 1 666
    // 2 999
  </script>
五、es6的扩展

https://es6.ruanyifeng.com/#docs/array
... 语法

  <script>
    var arr = [1, 2, 3];
    var arr1 = [4, 5, 6];
    var arr2 = ['小', '艾', '同学'];

    // 把数组展开为用逗号分隔的该数组中所有元素的序列
    console.log(...arr);//1 2 3 

    //求数组中的最大值
    console.log(Math.max(...arr1));//6

    // 数组拼接
    arr.push(...arr1)
    console.log(arr);//[1, 2, 3, 4, 5, 6]

    // 复制数组
    // 写法一
    var arr2 = [...arr1];
    console.log(arr2);//[4, 5, 6]

    var arr2 = ['冲', '冲', '冲'];
    // 这种复制实际上是克隆了原数组的值,而不是地址值所以修改arr2,不会影响arr1
    console.log(arr2);//["冲", "冲", "冲"]
    console.log(arr1);//[4, 5, 6]

    // 将字符串转为真正的数组
    var str = 'Hello World';
    // 空格会解析
    console.log([...str]);//["H", "e", "l", "l", "o", " ", "W", "o", "r", "l", "d"]

    // Array.of基本上可以用来替代Array()或new Array(),并且不存在由于参数不同而导致的重载。它的行为非常统一。
    // 用newArray时候,里面只有一值,是代表数组的长度
    var arr4 = new Array(3);//[empty × 3]
    console.log(arr4);

    // 用Array.of即使里面是一个值,也是数组中的元素
    var arr5 = Array.of(3); //[3]
    console.log(arr5);

    // .fill可以替换数组中的元素
    console.log(arr);//[1, 2, 3, 4, 5, 6]

    // fill只穿一个参数默认全部替换
    arr.fill(666);
    console.log(arr);// [666, 666, 666, 666, 666, 666]

    // fill第一个参数:要替换的元素
    // fill第二个参数:替换索引开始的位置
    // fill第三个参数:替换的索引结束位置,不含这个值
    arr.fill(7, 1, 3); //[1,3)
    console.log(arr); // [666, 7, 7 666, 666, 666]

    // fill第一参数还是要替换的元素
    // fill第二个参数是要替换的索引开始的位置,没有第三个参数,默认后面的全部替换
    arr.fill(555, 2)
    console.log(arr);//[666, 7, 555, 555, 555, 555]

  </script>

猜你喜欢

转载自www.cnblogs.com/xiaoaitongxue/p/12739617.html