写点什么

JavaScript08 - 数组

发布于: 2021 年 01 月 24 日
JavaScript08 - 数组

语法

数组构成:数组由一个或多个数组元素组成的,各元素之间使用逗号“,”分割。

数组元素:每个数组元素由“索引下标”和“值”构成。

索引下标:简称下标,以数字表示,默认从 0 开始依次递增,用于识别元素。

值:元素的内容,可以是任意类型的数据,如数值型、字符型、数组、对象等。

创建数组

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

方法一

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

例如:

var empty = []; // 没有元素的空数组
var num = [1, 3, 5, 7, 9]; // 有 5 个数值的数组
var mixin = ['Bob', 20, true]; // 3 种不同元素的数组
复制代码

方法二

调用构造函数 Array()创建数组

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

在创建数组时,最后一个元素后的逗号可以省略,也可以存在。

数组长度

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

var empty = []; // 数组没有元素var letters = ['a', 'b', 'c', 'd']; // 数组有 4 个元素var arr = ['a', , , , 'b', 'c'];console.log(empty.length); // 0console.log(letters.length); // 4console.log(arr.length); // 6
复制代码

修改数组长度

数组的 length 属性不仅可以用于获取数组长度,还可以修改数组长度。利用 length 属性指定数组长度时,有三种情况

大于数组长度

var arr1 = [];arr1.length = 5;console.log(arr1);      // 输出结果:(5) [empty × 5]var arr2 = [1, 2, 3];arr2.length = 4; console.log(arr2);      // 输出结果:(4) [1, 2, 3, empty]
复制代码

小于数组长度

var arr4 = ['hehe', 'xixi', 'gugu', 'jiujiu'];arr4.length = 3; console.log(arr4);      // 输出结果:(3) ["hehe", "xixi", "gugu"]
复制代码

等于数组长度

访问和修改数组元素

数组创建完成后,我们可以 [ ] 操作符访问数组中的元素,数组的引用位于方括号左边。

方括号中是一个返回非负整数的任意表达式。使用该语法即可以访问数组中的元素,又可以修改数组中的元素。

var letters = ['a', 'b', 'c', 'd'];
console.log(letters[0]); // 访问索引为 0 的元素 'a'
console.log(letters[4 - 2]); // 访问索引为 2 的元素 'c'
letters[1] = 1; // 修改索引为 1 的元素 ['a', 1, 'c', 'd']
letters[1 + 2] = 3; // 修改索引为 3 的元素 ['a', 1, 'c', 3]
复制代码

根据下标添加和修改

var arr = ['Asa','Taylor'];arr[2] = 'Tom';arr[3] =  'Jack';console.log(arr);
复制代码

delete 关键字只能删除数组中指定下标的元素值,删除后该元素依然会占用一个空的存储位置。

  var stu = ['Tom', 'Jimmy', 'Lucy'];  console.log(stu);	// 输出结果:(3) ["Tom", "Jimmy", "Lucy"]  delete stu[1];	// 删除数组中第2个元素  console.log(stu);	// 输出结果:(3) ["Tom", empty, "Lucy"]
复制代码

遍历数组

一维数组可以利用 for、forEach、for…of 进行遍历,二维数组只需在遍历数组后,再次遍历数组的元素即可。

for 循环遍历

var heroes = ['刘邦', '张良', '韩信', '萧何','刘备'];var len = heroes.length;for (var i = 0; i < len; i++) {console.log(heroes[i])}
复制代码

forEach 遍历

注意:forEach 不支持 continue 和 break,即,forEach 里面不能使用 continue 和 break

var arr = [1,2,3,4,[5,6,7],8];arr.forEach(function(ele,index,arr){    if(Array.isArray(ele)){ // 判断当前元素是否是数组,        //若是数组,再次进入遍历数组        ele.forEach(function(ele1,index,arr){            console.log(ele1);        })    } else {        console.log(ele);    }})
复制代码

for...of 遍历

var arr = [1,2,3,4,[5,6,7],8];for(item of arr) {    if (Array.isArray(item)){ // 判断当前元素是否是个数组,      // 若是数组,则再次进入遍历数组          for (items of item){            console.log(items);        }    } else {        console.log(item);    }}
复制代码

二维数组

// 使用Array对象创建数组var info = new Array(new Array('Tom', 13, 155), new Array('Lucy', 11, 152));var arr = new Array(new Array, new Array);// 空二维数组// 使用“[]”创建数组var num = [[1, 3], [2, 4]];var empty = [[], []];		            // 空二维数组
复制代码

数组内元素排序方法

冒泡排序

算法步骤

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

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

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

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

代码如下:

var arr = [10, 2, 5, 27, 98, 31];  console.log('待排序数组:' + arr);  for (var i = 0; i < arr.length-1; i++) {          // 控制需要比较的轮数    for (var j = 0; j < arr.length - i-1; j++) {    // 控制参与比较的元素      if (arr[j] > arr[j + 1]) {                  // 比较相邻的两个元素        [arr[j], arr[j + 1]] = [arr[j + 1], arr[j]];//解构交换      }    }  }  console.log('排序后的数组:' + arr);
复制代码

两个变量的交换

//1、两个变量值的交换---》面试题  var num1=10;  var num2=100
var temp=null; //定义一个第三方的变量 temp=num1 //temp=10 num1=num2 //num1=100 num2=temp //num2=10
//2、不使用第三方变量 num1=num1+num2; //110 num2=num1-num2; //10 num1=num1-num2; //100
//排序函数的原理? //数组的每两项进行比较,a和b //1、a和b比较a小于b,a和b的位置不变 //2、a和b比较a大于b,a和b的位置交换一下 //3、如果a和b相等,位置不变
复制代码

选择排序

算法步骤

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

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

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

代码如下:

//选择排序var arr= [10, 2, 5, 27, 98, 31];var len = arr.length;var minIndex, temp;for (var i = 0; i < len - 1; i++) {  minIndex = i;  for (var j = i + 1; j < len; j++) {    if (arr[j] < arr[minIndex]) {     // 寻找最小的数      minIndex = j;                 // 将最小数的索引保存    }  }  temp = arr[i];  arr[i] = arr[minIndex];  arr[minIndex] = temp;}
console.log('排序后的数组:'+arr);
复制代码


发布于: 2021 年 01 月 24 日阅读数: 13
用户头像

所思在远道 2020.08.19 加入

一只慢慢进步的小白

评论

发布
暂无评论
JavaScript08 - 数组