[JavaScript]内置对象Array初识
Array 数组对象是构造函数,需要用 new 实例化后使用。
创建数组的两种方式:
1. 字面量
var arr1 = ['1', '2', '3', '4', '5'];
2. new 关键字
var arr2 = new Array(1, 2, 3, 4, 5); // [1, 2, 3, 4, 5] var arr3 = new Array(5); // 创建了一个length为5,元素均为undefined的数组
监测是否为数组
1. 数组名 instanceof Array
console.log(arr3 instanceof Array); // true console.log('22' instanceof Array); // false
2. Array.isArray( 数组名 );
console.log(Array.isArray(arr2)); // true console.log(Array.isArray('1, 2, 4, 8')); // false
元素的添加和删除
操作 | 函数名 | 返回值 |
在末尾添加新的数组元素(一个或多个) | .push(); | 返回新的长度 |
删除最后一个元素 | .pop(); | 返回删除元素的值 |
在开头添加新的数组元素(一个或多个) | .unshift(); | 返回新的长度 |
删除第一个元素 | .shift(); | 返回删除元素的值 |
一种在原数组的末尾添加元素的思路:arr[arr.length] = 元素
// 将大于10的元素存入另一个数组 var arr4 = [12, 5, 1, 52, 2, 3, 6, 8, 10, 21, 33]; var arr4New = []; for (var i = 0; i < arr4.length; i++) { if (arr4[i] > 10) { arr4New[arr4New.length] = arr4[i]; } } console.log(arr4New); //[12, 52, 21, 33]
翻转原数组,返回翻转后的数组
.reverse();
冒泡排序(升序)
.sort();
只能对数字型同等位数进行排序,它的排序是对字符串型排序才有效果的。
var arr1 = [11, 2, 66, 5, 51, 20, 0, 77]; arr1.sort(); console.log(arr1); // 0, 11, 2, 20, 5, 51, 66, 77 var arr2 = ['blue', 'about', 'pink', 'paper', 'before', 'zoom']; arr2.sort(); console.log(arr2); // "about", "before", "blue", "paper", "pink", "zoom"
如果想用sort();对不同位数的数字型进行排序。参照以下固定写法:
(原理:比较器。具体参看MDN文档)
arr1.sort(function (a, b) { return a - b; // 升序 // return b - a; // 降序 }) console.log(arr1); // 0, 2, 5, 11, 20, 51, 66, 77
获取数组索引
.indexOf( 元素名 ); 返回元素第一次出现的索引。如果不存在,返回-1。
.lastIndexOf( 元素名 ); 返回元素最后一次出现的索引。如果不存在,返回-1。
.indexOf( 元素名, 起始索引)); 第一个参数是查找的元素,第二个参数表示从第n个索引开始找。
重点案例:数组去重
// 思路:在新数组中查找原来数组的各个元素,如果索引为-1,则在新数组中添加元素。 function unique(arr) { var newArr = []; for (var i = 0; i < arr.length; i++) { if (newArr.indexOf(arr[i]) === -1) { newArr.push(arr[i]); } else { continue; } } return newArr; }
数组转字符串
1. toString(); 元素之间有逗号分隔。
2. join('分隔符'); 元素之间的分隔符可以改成任意的符号,不输入分割符时默认是逗号。
数组的连接和拆分
.concat( 数组名 ); 连接两个或多个数组,返回一个新数组,不影响原数组。
.slice(begin, end); 返回一个被截取的新数组
.splice(begin, length); 返回被删除片段后的原数组!