数组
数组是数据结构中一个重要的知识点,几乎所有的编程语言都原生支持数组类型,因为数组是最简单的内存数据结构。
数组存储一系列同一种数据类型的值,虽然在JavaScript中,也可以在数组中保存不同的数据类型,但是我们一个尽量避免这么做,大多数语言都没有这种能力。
1.创建数组和初始化数组
在JavaScript中声明,创建和初始化数组特别简单,如下:
let st = new Array();
let st = [];
let st = [‘javascript’,’html’,’css’,’vue’];
2.对数组添加元素
(1)在数组末尾插入元素
①最直观的办法就是直接在数组下标length处直接赋值
let st = ['你好','你在干啥?'];
st[st.length] = '我很好';
console.log(st) //["你好", "你在干啥?", "我很好"]
②使用push方法在数组末尾插入元素
let st = [];
st.push('你好');
console.log(st); //["你好"]
st.push('我很好');
console.log(st); //["你好", "我很好"]
(2)在数组开头插入元素
①最直观的办法就是希望数组原有的元素都右移一位,把索引为0的那位空出来用于存放想要插入的元素,为了让所有的数组实例都能使用此方法,就直接在数组原型上面添加方法。
Array.prototype.insert = function(value){
for(let i = this.length; i >= 0; i--){
this[i] = this[i-1];
}
this[0] = value;
}
let st = new Array();
st.insert(1);
console.log(st); // [1]
st.insert(5);
console.log(st); // [5, 1]
st.insert(10);
console.log(st); // [10, 5, 1]
②使用unshift方法在数组开头插入元素
let st = [2,3];
st.unshift(4);
console.log(st); // [4, 2, 3]
st.unshift(6);
console.log(st); // [6, 4, 2, 3]
3.对数组删除元素
(1)从数组开头删除元素
①最直观的办法是移除数组第一个元素,后面元素左移
Array.prototype.removeFirst = function(){
for(let i = 0; i < st.length; i++){
this[i] = this[i + 1];
}
return this.reIndex(this);
}
Array.prototype.reIndex = function(myArray){
let newst = [];
for(let i = 0; i < myArray.length; i++){
if(myArray[i] !== undefined){
newst.push(myArray[i]);
}
}
return newst;
}
let st = new Array(1,2,3,4);
st = st.removeFirst();
console.log(st); // [2, 3, 4]
st = st.removeFirst();
console.log(st); // [3, 4]
②使用shift方法在数组开头删除元素
let st = [1,2,3,4];
st.shift();
console.log(st); // [2, 3, 4]
st.shift();
console.log(st); // [3, 4]
(2)从数组末尾删除元素 使用pop方法
let st = [1,2,3,4];
st.pop();
console.log(st); // [1, 2, 3]
4.在数组任意位置添加或删除元素(splice方法)
利用JavaScript中数组的splice方法可以很简单的就对数组进行任意的添加或删除操作。
st.splice(3,2)表示删除从数组索引3开始的2个元素,上代码:
let st = [1,2,3,4,5];
st.splice(3,2);
console.log(st) // [1, 2, 3]
想从数组指定位置插入元素(st.splice(3,0,7,8,9))上代码:
let st = [1,2,3,4,5];
st.splice(3,0,7,8,9);
console.log(st); //[1, 2, 3, 7, 8, 9, 4, 5]
如果第二个参数不是0,就是会删除参数个元素后后面的参数在添加对应位置上,上代码:
let st = [1,2,3,4,5];
st.splice(3,2,7,8,9);
console.log(st); //[1, 2, 3, 7, 8, 9]
5.二维和多维数组
(1)二维数组
JavaScript中只支持一维数组,并不支持矩阵(二维数组,或数组的数组),但是可以通过数组嵌套,实现矩阵或任一多维数组。上代码
let st = [];
st[0] = [];
st[0][0] = 1;
st[0][1] = 2;
st[0][2] = 3;
st[0][3] = 4;
st[1] = [];
st[1][0] = 6;
st[1][1] = 7;
st[1][2] = 8;
st[1][3] = 9;
console.table(st);
输出结果:
6.JavaScript中数组的一些常用方法
在JavaScript中,数组是经过改进的对象,这意味着创建的每个数组都有一些可用的方法。JavaScript中数组十分强大,并且相比于其他语言中的数组,JavaScript中的数组有许多很好用的方法。例如:
(1)concat 连接2个或更数组,并返回结果。
(2)every 对数组中的每个元素运行给定函数,如果该函数对每个元素都返回true,则返回true。
(3)filter 对数组中的每个元素运行给定函数,返回该函数会返回true的元素组成的数组。
(4)forEach 对数组中的每个元素运行给定函数。该方法没有返回值。
(5)join 将所有数组元素连接成一个字符串。
(6)indexOf 返回第一个与给定参数相等的数组元素的索引,没有找到则返回-1。
(7)lastIndexOf 返回在数组中搜索到的与给定参数相等的元素的索引里最大的值。
(8)map 对数组中的每个元素运行给定函数,返回每次函数调用的结果组成的数组。
(9)reverse 颠倒数组中元素的顺序,原先第一个元素现在变成最后一个,同样原先的最后一个元素变成了现在的第一个。
(10)slice 传入索引值,将数组里对应索引范围内的元素作为新数组返回。
(11)some 对数组中的每个元素运行给定函数,如果任一元素返回true,则返回true。
(12)sort 按照字母顺序对数组顺序,支持传入指定顺序方法的函数作为参数。
(13)toString 将数组作为字符串返回。
(14)valueOf 和toString类似,将数组作为字符串。