数组的定义
1.字面量定义
var arr = [值1,值2,值3,...,值n]
2.构造函数定义
构造函数:
new Array() //空数组
var arr1 = new Array()
=> arr1 数组名 引用变量
=> new Array() 创建数组对象
var arr2 = new Array(100,200,300,400)
var arr3 = new Array(5) 只有一个参数时,表示数组存储元素个数
每个数组里面的值,我们称为元素,而每个元素都有对应的下标(索引号),从0开始移次排列。
数组也是一种线性表的数据结构\
arr.length 查看数组的长度,返回一个数值类型的数字
数组的常用方法
- arr.push(元素) 在数组末尾增加一个元素
- arr.unshift(元素) 在数组前增加一个元素
- arr.pop() 删除末尾元素
- arr.shift() 删除第一个元素
- arr.splice(索引号,截取元素个数) 截取某段数组元素并删除
- arr.reverse() 反转数组
- arr.sort() 数组从大到小排序,将元素转换为字符串类型进行比较,默认从每个元素的第一个字符比较起
- arr.concat() 数组拼接,将两个或多个数组拼接起来,返回一个新数组,不会改变原数组
- slice() 从原数组中指定开始下标到结束下标之间的项组成为新数组,不会改变原数组
- arr.indexOf(元素) 返回数组中指定元素的下标,元素不存在就返回-1
- lastIndexOf(元素) 从最后一个元素开始查找,返回指定数组的元素下标,元素不存在就返回-1
- arr.join() 将数组转为字符串,可以在()放字符作为分隔符,默认以逗号分隔
常用的数组遍历方法
item:元素 index:索引 arr:数组名
这三个都只是形参,可以自己修改,但建议就用这三个英文命名,清晰易辨别。
这三个形参可以不全写,写一个代表元素,两个代表元素和索引
- forEach(function(item,index,arr){代码块}) 遍历数组
- map(function(item,index,arr){代码块}) 遍历并返回一个新数组
- filter(function(item,index,arr){代码块}) 将满足条件的元素筛选出来并返回一个新数组
- find(function(item,index,arr){代码块}) 遍历查找,将满足条件的第一个元素返回为数值,找到第一个就跳出
- every(function(item,index,arr){代码块}) 判断数组中元素是否所有都满足条件,是就返回true,有一个不符合就返回false
- some(function(item,index,arr){代码块}) 判断数组中元素是否满足条件,有一个元素满足就返回true,否则false
- reduce(function(变量,item,index){代码块},变量初始值) 有两个参数,变量数组,对数组元素累加求和
- reduceRight(function(变量,item,index){代码块},变量初始值) 和reduce一样的效果,不过从最后一个元素开始累加。
各个方法的基本使用示例:
arr.push(元素) 在数组末尾增加一个元素
var arr = [1, 2, 3, 4, 5];
arr.push(6);
console.log(arr); //[1, 2, 3, 4, 5, 6]
arr.unshift(元素) 在数组前增加一个元素
var arr = [1, 2, 3, 4, 5];
arr.unshift(0);
console.log(arr); //[0, 1, 2, 3, 4, 5]
arr.pop() 删除末尾元素
var arr = [1, 2, 3, 4, 5];
arr.pop();
console.log(arr); //[1, 2, 3, 4]
arr.shift() 删除第一个元素
var arr = [1, 2, 3, 4, 5];
arr.shift();
console.log(arr); //[2, 3, 4, 5]
arr.splice(索引号,截取元素个数) 截取某段数组元素并删除
var arr = [1, 2, 3, 4, 5];
arr.splice(2, 2);
console.log(arr); //[1, 2, 5]
arr.reverse() 反转数组
var arr = [1, 2, 3, 4, 5];
arr.reverse();
console.log(arr); // [5, 4, 3, 2, 1]
arr.sort() 数组从大到小排序。该方法是先将每个元素的第一个字符进行比较,如果第一个字符一样,再比较第二个字符的大小
var arr = [3, 1, 5, 2, 4];
arr.sort();
console.log(arr); //[1, 2, 3, 4, 5]
var arr1 = [32, 9, 15, 3, 11];
arr1.sort();
console.log(arr1); //[11, 15, 3, 32, 9]
arr.concat() 数组拼接,将两个或多个数组拼接起(可以是单个字符,也可以是数组),返回一个新数组,不会改变原数组。
var arr = [1, 2, 3, 4, 5];
var newArr = arr.concat(6, [7, 8, 9]);
console.log(arr); //[1, 2, 3, 4, 5]
console.log(newArr); //[1, 2, 3, 4, 5, 6, 7, 8, 9]
slice() 从原数组中指定开始下标到结束下标之间的项组成为新数组,不会改变原数组。左闭右开,不包括结束下标。
var arr = [1, 2, 3, 4, 5];
var newArr = arr.slice(1, 3);
console.log(arr); //[1, 2, 3, 4, 5]
console.log(newArr); //[2, 3]
arr.indexOf(元素) 返回数组中指定元素的下标,元素不存在就返回-1。找到第一个就会返回,不会继续查找。
var arr = [1, 2, 3, 4, 4, 5];
console.log(arr.indexOf(4)); //3
console.log(arr.indexOf(6)); //-1
lastIndexOf(元素) 从最后一个元素开始查找,返回指定数组的元素下标,元素不存在就返回-1
var arr = [1, 2, 3, 4, 4, 5];
console.log(arr.lastIndexOf(4)); //4
console.log(arr.lastIndexOf(6)); //-1
arr.join() 将数组转为字符串,可以在()放字符作为分隔符,默认以逗号分隔
var arr = [1, 2, 3, 4, 4, 5];
console.log(arr.join()); //1,2,3,4,4,5
console.log(arr.join("-")); //1-2-3-4-4-5
遍历数组的常用方法
forEach(function(item,index,arr){代码块}) 遍历数组
var arr = [1, 2, 3, 4, 5];
arr.forEach(function (item, index, arr) {
console.log(item); // 1 2 3 4 5
console.log(index); // 0 1 2 3 4
console.log(arr); //[1, 2, 3, 4, 5]
});
map(function(item,index,arr){代码块}) 遍历并返回一个新数组
var arr = [1, 2, 3, 4, 5];
var newArr = arr.map(function (item, index, arr) {
//如果下标大于1,对应的该元素自增1
if (index > 1) {
item++;
}
return item; //需要加return返回值
});
console.log(arr); //[1, 2, 3, 4, 5]
console.log(newArr); //[1, 2, 4, 5, 6]
filter(function(item,index,arr){代码块}) 将满足条件的元素筛选出来并返回一个新数组
var arr = [1, 2, 3, 4, 5];
var newArr = arr.filter(function (item, index, arr) {
//如果下标大于1,对应的该元素自增1
if (index > 1) {
return item; //需要加return返回指定值
}
});
console.log(arr); //[1, 2, 3, 4, 5]
console.log(newArr); //[3, 4, 5]
find(function(item,index,arr){代码块}) 遍历查找,将满足条件的第一个元素返回为数值,找到第一个就跳出
var arr = [1, 2, 3, 3, 4, 5];
var newArr = arr.find(function (item, index, arr) {
//返回元素等于3的下标
if (item == 3) {
return index; //需要加return返回指定值
}
});
console.log(arr); //[1, 2, 3, 4, 5]
console.log(newArr); //3
every(function(item,index,arr){代码块}) 判断数组中元素是否所有都满足条件,是就返回true,有一个不符合就返回false
var arr = [1, 2, 3, 4, 5];
var newArr = arr.every(function (item) {
return item < 3;
});
console.log(arr); //[1, 2, 3, 4, 5]
console.log(newArr); //false
some(function(item,index,arr){代码块}) 判断数组中元素是否满足条件,有一个元素满足就返回true,否则false
var arr = [1, 2, 3, 4, 5];
var newArr = arr.some(function (item) {
return item < 3;
});
console.log(arr); //[1, 2, 3, 4, 5]
console.log(newArr); //true
reduce(function(变量,item,index){代码块},变量初始值) 有两个参数,变量数组,对数组元素累加求和
var arr = [1, 2, 3, 4, 5];
var sum = arr.reduce(function (m, item) {
return m + item;
}, 0);
console.log(arr); //[1, 2, 3, 4, 5]
console.log(sum); //15