一、什么是数组。
数组是一组数据的集合,其表现形式就是内存中的一段连续的内存地址。
二、JS中数组的特点。
1.定义时不需指定任何数据类型。
2.定义时不需指定数组长度。
3.可以存储任何数据类型的数据。
数组的创建。
1.隐式创建。
2.实例化创建。
3.创建数组并指定长度。
//方法一 隐式创建
var arr1 = [1,3,5,7,9];
//方法二 实例化创建
var arr2 = new Array(2,4,6,8,10);
//方法三 指定长度
var arr3 = new Array(3);//固定数组长度为3
arr3[0] = 1;
arr3[1] = 2;
arr3[2] = 3;
数组中的语法。
1.数组声明。
var arr=new Array();
2.数组赋值。
var arr=new Array(1,2,3,4,5);
当有一个值时为数组长度,多个值时为赋值。
3.数组中的索引。
var arr2 = new Array();
arr2[0] = 1;
arr2[1] = "a";
arr2[2] = true;
arr2[3] = function () {
}
console.log(arr2);//0: 1 1: "a" 2: true 3: ƒ ()
索引从0开始,依次类推。
4.数组的遍历。
//方法一 for循环
for (var i = 0; i < arr.length; i++) {
console.log(arr[i]);
}
//方法二 for in
for(var index in arr){
console.log(arr.[index]);
}
//方法三 forEach
arr.forEach(function(value,index,arr){
})
5.map
映射。
将一个数组映射到另一个数组,映射后返回之后的集合。
var list = [1, 2, 3, 4, 5, 6];
var newlist = list.map(function (value, index) {
return value * value
});
console.log(newlist);//[1,4,9,16,25,36]
6.累计器。
reduce
方法。
var num = [1, 2, 3, 4];
var number = num.reduce(function (all, value) {
return all * value;
});
console.log(number);//10
7.数组拼接。
conca
t方法。
var a = [1, 2];
var b = [3, 4];
console.log(a.concat(b));//[1,2,3,4]
8.字符串转化为数组。
split
方法。
var str = "abcdef";
var strarr = str.split("");
console.log(strarr);//[a,b,c,d,e,f]
9.数组转化为字符串。
join
方法。
var str = "abcdef";
var strarr = str.split("");
console.log(strarr);
console。log(starr。join(""))//abcdef
10.数组翻转。
reverse
方法。
var s = [1, 2, 3, 4];
console.log(s.reverse());//[4,3,2,1]
例题:
将一串字符原位翻转。
var ts = "Hello World !";
var tstemp = ts.split(" ");
console.log(tstemp);//["Hello", "World", "!"]
var data = tstemp.map(function (value, index) {
return value.split("").reverse().join("");
});
console.log(data);//["!","dlroW","olleH"]
console.log(ts.split("").reverse().join("").split(" ").reverse());//["!","dlroW","olleH"]
11.数组自带的排序。
sort
方法
var f1 = [1, 5, 2, 3, 6, 4];
console.log(f1.sort());//[1,2,3,4,5,6]
默认从小到大排序
12.数组追加方法。
push
方法,往后追加。
unshif
t方法,往前追加。
13.数组的删除方法。
pop
方法,删除后面的元素。
shift
方法,删除前面的元素。
var f3 = [1, 2, 3];
console.log(f3.push(20);)//数组追加后的长度。 4
console.log(f3);//追加后的数组。[1,2,3,20]
console.log(f3.unshift(12));//5
console.log(f3);//[12,1,2,3,20]
console.log(f3.pop());//返回的是删除的那个元素 20
console.log(f3);//[12,1,2,3]
console.log(f3.shift());//12
console.log(f3);//[1,2,3]
14,检测数组中是否每一位都满足条件。
var f3=[1,2,3]
var has = f3.every(function (val, index) {
return val % 2 == 0;
}); //false
返回的是Boolean
值。
15.根据条件过滤数组中的元素。
var f3=[1,2,3];
var has1 = f3.filter(function (value) {
return value % 2 != 0;
});
console.log(has1);//[1,3]
16.查找满足条件的元素。
var f3=[1,2,3];
var has2 = f3.find(function (value) {
return value > 2;
});
console.log(has2);//[3]
根据条件查找每一位元素,返回的是第一个满足条件的元素。
17.查找数组中的值。
indexOf
方法,从前往后找。
lastIndexOf
方法,从后往前找。
var f3=[1,2,3];
console.log(f3.indexOf(4));//-1
console.log(f3.lastIndexOf(1));//2
如果数组中有这个值返回索引,没有则返回-1。
18.检测对象是否为数组。
Array.isArray
方法。
var f3=[1,2,3];
console.log(Array.isArray(f3));//true
返回的是Boolean
值。
19.数组截取。
slice
方法。
splice
方法。
var m1 = [1, 2, 3, 4];
console.log(m1.slice(0, 3));//[1,2,3]
console.log(m1);//[1,2,3,4]
var m2=[1,2,3,4,5];
console.log(m2.splice(0,3));//[1,2,3]
console.log(m2);//[4,5]
第一个参数表示从哪个索引为开始截取,第二个参数表示截取几个长度。
slice
截取之后元素不受影响。splice
截取之后元素会受影响。