持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第23天,点击查看活动详情
数组,就是将多个元素(通常是同一类型)按一定顺序排列放到一个集合中,那么这个集合我们就称之为数组。
定义数组
定义一个数组变量跟定义一个基本类型的变量格式几乎一样。
var arr = [];
var names = ['zs', 'ls', 'ww'];
获取数组元素
通常我们可以通过数组的索引值(下标)来获取数组中的某个元素,。索引值从0开始,如果使用一个不存在的索引来获取的话将会返回一个undefined值。
var names = ['zs', 'ls', 'ww']; // 索引依次是: 0 1 2
console.log(names[0]); // zs
console.log(names[2]); // ww
console.log(names[3]); // undefined
遍历数组
遍历数组的方式可以使用for语句和forEach语句。
//for语句
var array = ['zs', 'ls', 'ww'];
for(var i = 0; i < array.length; i++) {
console.log(array[i]);
}
//forEach语句
forEach((item, index, array) => {
console.log(item, index);
});
注意:forEach语句中
item:数组内的遍历的一个元素
index:对应元素的索引(下标)
array:当前遍历的数组对象
数组常用方法
- array.push():往数组的末尾添加一个或多个元素,并返回新的数组长度。该方法会改变原数组。
var array = ['zs', 'ls', 'ww'];
var res = array.push('ll');
console.log(res, array); // 4 ['zs', 'ls', 'ww', 'll']
- array.pop():删除并返回数组的最后一个元素,若该数组为空,则返回undefined。该方法会改变原数组。
var array = ['zs', 'ls', 'ww'];
var res = array.pop();
console.log(res, array); // 'ww' ['zs', 'ls']
- array.unshift():往数组的开头添加一个或多个元素,并返回新的数组长度。该方法会改变原数组。
var array = ['zs', 'ls', 'ww'];
var res = array.unshift('ll');
console.log(res, array); // 4 ['ll', 'zs', 'ls', 'ww']
- array.shift():删除数组的第一项,并返回第一个元素的值。若该数组为空,则返回undefined。该方法会改变原数组。
var array = ['zs', 'ls', 'ww'];
var res = array.shift();
console.log(res, array); // 'zs' ['ls', 'ww']
- array.concat():合并两个或多个数组,生成一个新的数组。原数组不变。
var array1 = ['a', 'b', 'c'];
var array2 = ['d', 'e', 'f'];
var res = array1.concat(array2);
console.log(res); // ['a', 'b', 'c', 'd', 'e', 'f']
console.log(array1); // ['a', 'b', 'c']
- array.join():将数组的每一项用指定字符连接形成一个字符串。默认连接字符为","。
var array = ['a', 'b', 'c', 'd', 'e', 'f'];
var res1 = array.join();
var res2 = array.join('-');
console.log(res1); // a,b,c,d,e,f
console.log(res2); // a-b-c-d-e-f
- array.reverse():将数组倒序。该方法会改变原数组。
var array = ['zs', 'ls', 'ww'];
array.reverse();
console.log(array); // ['ww', 'ls', 'zs']
- array.sort():对数组元素进行排序,按照字符串UniCode码排序。可以传入排序函数,那么将会根据传入函数来排序数组。该方法会改变原数组。
var array = [1, 88, 24];
var sortNumFn = function(a, b) {
return a - b;
};
array.sort(sortNumFn);
console.log(array); // [1, 24, 88]
- array.slice():截取复制数组指定位置的内容。原数组不变。
slice(n, m)
n:开始位置索引
m:结束位置索引,不写则默认截取到最后,截取结果不包括结束位置索引的元素
var array = [1, 2, 3, 4, 5];
var newArr = array.slice(1, 3);
console.log(array); // [1, 2, 3, 4, 5]
console.log(newArr); // [2, 3]
- array.splice():在任意位置添加或删除元素,返回删除或被替换的值,如果没有被删除或替换则返回空数组。该方法会改变原数组。
splice(index, num, item1, ..., itemX)
index:必填,从何处(索引)添加/删除元素。
num:可选,当是使用删除功能时,删除多少的数字,可以是0,没有填入的话将默认一直删除到最后的所有元素
item1/itemX:必填,要添加到数组的新元素。
//只有一个参数时
var array = [1, 2, 3, 4, 5];
var res = array.splice(2); //从索引值2开始删除剩下的元素
console.log(res); // [3, 4, 5]
console.log(array); // [1, 2]
//有两个参数时
var array = [1, 2, 3, 4, 5];
var res = array.splice(1, 2); //从索引值2开始删除2个元素
console.log(res); // [2, 3]
console.log(array); // [1, 4, 5]
//有三个参数时
var array = [1, 2, 3, 4, 5];
var res = array.splice(2, 1, 6); //从索引值2开始替换掉1个元素,并且插入6
console.log(res); // [3]
console.log(array); // [1, 2, 6, 4, 5]