// isArray : 判断是否是数组
var arr1 = new Array();
var date = new Date();
// 输出true
console.log('是数组', Array.isArray(arr1));
// 输出flase
console.log('不是数组', Array.isArray(date));
var arr2 = new Array(1, 2, 3, 3, 2, 1);
// indexOf : 正向查找元素的位置
// 输出 1
console.log('正向查找到的位置 : ', arr2.indexOf(2));
// lastIndexOf: 反向查找元素的位置
// 输出 4
console.log('反向查找到的位置 : ', arr2.lastIndexOf(2));
var arr3 = new Array('a', 'b', 'c', 'd');
// forEach : 遍历数组 参数是一个回调函数 有3个参数 当前元素 元素索引 整个数组
// 必须 变量.forEach
arr3.forEach(function (e, i, arr){
console.log('当前元素 : ', e);
console.log('数组索引 : ', i);
console.log('整个数组 : ', arr);
});
var arr4 = new Array(1,2,3,4,5,6);
// every : 回调函数有一个返回false时终止执行 every返回false
var value1 = arr4.every(function (e, i, arr){
console.log(e, ' - ', i);
return e < 5;
});
// 输出false
console.log(value1);
// some : 回调函数有一个返回true时终止执行 some返回true
var value2 = arr4.some(function (e, i, arr){
console.log(e, ' - ', i);
return e > 5;
});
// 输出true
console.log(value2);
var arr5 = new Array(1, 2, 3, 4, 5, 6);
// map : 回调函数返回值组成一个新数组返回 新数组索引结构和原数组一致
// 必须 变量.map
// 原数组不变
var value3 = arr5.map(function (e, i, arr){
return e * e;
});
// 输出 [1, 4, 9, 16, 25, 36]
console.log('新数组 : ', value3);
// 输出[1, 2, 3, 4, 5, 6]
console.log('原数组 : ', arr5);
// filter map forEach 都可以接收第2个参数 用来绑定this
let obj = {}
let arr = ['a', 'b']
arr.filter(function (x) {
// this 代表obj对象
this.x = x
}, obj)
var arr6 = new Array(1, 2, 3, 4, 5, 6);
// filter : 返回数组的一个子集 回调函数用于逻辑判断是否返回 返回true则把当前元素
// 加入到返回数组中false则不加
var value4 = arr6.filter(function (e, i, arr){
return e%2 == 0;
});
console.log('新数组 : ', value4);
var arr7 = new Array(1, 2, 3, 4, 5, 6);
// reduce : 从最小索引开始 每次将遍历2个值求和返回给下一次遍历 最终输出总值
// 10 : 初始值
var value5 = arr7.reduce(function (v1, v2){
return v1 + v2;
}, 10);
// 输出 31
console.log('数组的总和是 : ', value5);
// reduceRight : 从最大索引开始 每次遍历2个值相减
// 100 : 初始值
var value6 = arr7.reduceRight(function (v1, v2){
return v1 - v2;
}, 100);
// 输出 79
console.log(value6);