|
Array是一个封装了一系列数组属性和方法的内置构造函数,Array是JS中最为重要的一个内置构造函数,请大家务必掌握。
创建一个Array类型的数据,与Boolean一样,也具有以下三种方式
// 字面量方式
var arr1 = ['a','b','c'];
// 构造函数方式
var arr2 = new Array('a','b','c');
// 直接调用函数
var arr3 = Array('a','b','c');
console.log(arr1,arr2,arr3)
Array的方法分为以下三类:
1、访问器方法
访问器方法指的是调用该方法,对象本身不会被修改,计算结果会以方法的返回值给出。
注意:在JS中,字符串也可以被当做数组使用,但仅限于concat方法和slice方法。
方法名 | 解释 | 举例 | concat() | 合并数组,返回合并好的数组;参数可以指定一到多个。 | | slice() | 截取数组,返回截取后的数组;第一个参数指定开始截取的位置,第二个参数结束位置(不指定则截取到结尾) | | join() | 把数组合并成字符串,返回字符串;可以指定一个分隔符(默认是逗号) | |
//concat
var arr1=['a','b','c'];
var arr2=['d','e','f'];
var arr3=arr1.concat(arr2);
console.log(arr3);
//slice
var arr3=arr1.slice(1,2);
console.log(arr3);
//join
var str=arr1.join('|');
console.log(str);
2、修改器方法
修改器方法指的是,调用该方法,对象本身会被修改。
方法名 | 解释 | 举例 | push() | 在数组的后面添加一个或多个元素,返回添加了新数组之后数组的长度 | | unshift() | 在数组的前面面添加一个或多个元素,返回添加了新数组之后数组的长度 | | pop() | 删除数组最后一个元素,返回被删的元素。 | | shift() | 删除数组的第一个元素,返回被删的元素。 | | splice(开始位置,删除数量,替换数据1, 替换数据2,. . .,替换数据N) | 给数组添加、删除或替换元素。 返回被删掉的元素数组(如果没删元素就是空数组) | | sort() | 对数组进行排序。返回排好序的数组。 | | reverse() | 翻转数组。返回翻转之后的数组。 | |
//push
var arr1=['a','b','c'];
var arr2=['d','e','f'];
arr1.push('hello');
console.log('push结果:'+arr1);
//unshift
var arr1=['a','b','c'];
arr1.unshift('hello');
console.log('unshift结果:'+arr1);
//pop
var arr1=['a','b','c'];
arr1.pop();
console.log('pop结果:'+arr1);
//shift
var arr1=['a','b','c'];
arr1.shift();
console.log('shift结果:'+arr1);
//splice
var arr1=['a','b','c'];
arr1.splice(1,1,'hello');
console.log('splice结果:'+arr1);
//sort
var arr1=['b','a','c'];
arr1.sort();
console.log('sort结果:'+arr1);
//注意:这里我们只演示了sort的基本用法,sort排序还支持传入一个函数,以后再专门讲一下sort方法。
//reverse
var arr1=['a','b','c'];
arr1.reverse();
console.log('reverse结果:'+arr1);
3、ES6新增的方法
这些方法也都是访问器方法,都需要回调函数作为参数。
方法名 | 解释 | 举例 | forEach() | 用于数组遍历,需要一个回调函数作为参数 | | filter() | 从原数组中提取满足条件的元素组成新数组并返回, 需要一个回调函数作为参数; | | map() | 回调函数的返回值(true或者false)决定对应的元素是否在新数组中
返回一个元素个数与原数组一样的新数组,需要一个回调函数作为参数
回调函数返回什么,新数组的元素就是什么。 | | every() | 返回布尔值,要求每个元素都满足条件才得到true,需要一个回调函数作为参数。 | | some() | 返回布尔值,只要一个元素满足条件就可以true,需要一个回调函数作为参数。 | | reduce() | 用于综合计算,需要一个回调函数作为参数,第二个参数指定初始值
回调函数接收三个参数:①上一次回调的结果 ②当前的元素 ③ 索引 | | reduceRight() | 同 reduce 一样,只是从后向前遍历。 | | indexOf() | 返回指定元素在数组中第一次出现的位置。 | | lastIndexOf() | 返回指定元素在数组中最后一次出现的位置。 | |
//forEach
var arr1 = ['a', 'b', 'c', 'e'];
arr1.forEach((a,b,c)=> {
console.log(a,b,c);
if(a=='c'){
console.log('遍历到了c');
}
});
//map
var arr = [0,2,4,6,8];
var newArr = arr.map(a=>{
console.log(a)
return a/2;
});
console.log(newArr);
//filter
var arr1 = [0,2,4,6,8];
var newArr = arr1.filter(a=>{
if(a>=4){
return a;
}
});
console.log(newArr);
//every
var arr1 = [1,2,4,6,8];
var bool=arr1.every(a=>{
return a>0;
});
console.log(bool);//true
//或者这样写
var arr1 = [1,2,4,6,8];
var bool=arr1.every(a=>{
if(a>0){
return a;
}
});
console.log(bool);//true
//some
var arr1 = [0,0,0,0,8];
var bool=arr1.some(a=>{
return a>0;
});
console.log(bool);//true
//或者这样写
var arr1 = [0,0,0,0,8];
var bool=arr1.some(a=>{
if(a>0){
return a;
}
});
console.log(bool);//true
//reduce有初始值
var arr = [1,2,3,4];
var sum = arr.reduce((pre, item) => {
return pre + item
}, 10)
console.log(sum) // 20
//reduce无初始值
var arr = [1,2,3,4];
var sum = arr.reduce((pre, item) => {
return pre + item
})
console.log(sum) // 10
//indexOf
var arr = ['a','b','c','c','d'];
console.log(arr.indexOf('c')) // 2
//lastIndexOf
var arr = ['a','b','c','c','d'];
console.log(arr.lastIndexOf('c')) // 3
请注意:以上这些方法全部需要传入一个函数作为参数,我们在传参时为了书写方便,写的都是箭头函数,例如()=>{},它等同于function(){},大家目前只要明白这一点就可以了,后面我们会单独对箭头函数进行讲解的。
另外,以上这些方法的功能非常强大,不仅仅可以实现以上功能,由于大家目前还不具备深度使用的能力,所以目前我们只讲这些,能把以上的用法搞清楚就已经很不错了。
再次强调,Array非常重要,请大家务必掌握。
ok,我们下一篇再继续。
|
|