方便查看的数组方法
前言
今天来说下数组常用的方法!
一、可以遍历数组的方法
1.forEach(function(元素,索引,表示当前在遍历数组){ }) 遍历 遍历数组中的元素,没有返回值
var arr = ["a", "b", "c", "d", "e"];
var res2 = arr.forEach(function (v, k) {
// console.log(v, k);//元素 索引
console.log(arr);// ['a', 'b', 'c', 'd', 'e']
});
console.log(res2);//undefined
2.map(function(元素,[索引,表示当前在遍历数组]){}) 遍历数组返回一个新的数组,新数组中元素是原来数组中元素处理之后的结果.
var arr = ["a", "b", "c", "d", "e"];
var res3 = arr.map(function (v, k, arr) {
console.log(v);//遍历出的每一个元素
console.log(k);//元素对应的下标
console.log(arr);//遍历的数组
});
//例:将arr3 = [4,5,6,7,8]乘以1.3后返回
var arr3 = [4, 5, 6, 7, 8];
var res5 = arr3.map(function (v) {
return v * 1.3; // [5.2, 6.5, 7.800000000000001, 9.1, 10.4]
});
console.log(res5);
3.filter(function(元素,[索引]){}) 当return后面bool值为true的时候,返回当前元素,没有返回条件的就是空数组..
var arr2 = [4, 5, 6, 7, 8];
var res4 = arr2.filter(function (v, k) {
//返回值元素大于5的元素,结果是bool值true,返回当前元素
return v > 5;// [6, 7, 8]
//返回值元素大于15的元素
return v > 15;//[] 没有返回条件的就是空数组..
});
console.log(res4);
filter();第二个用法:把一个Array中的空字符串删掉
var arr = ["A", "", "B", null, undefined, "C", " ","B"];
var r = arr.filter(function (s) {
return s && s.trim(); // 注意:IE9以下的版本没有trim()方法
});
console.log(r);// ['A', 'B', 'C', 'B']
4.reduce(function(total,v){},初始值) total 总计(每次累加的和) v 正在循环的元素
// 累加数组的元素,放在一起返回
var ages1 = [3, 20, 10, 18];
//相加的总和
var res4 = ages1.reduce(function(total, v){
console.log(total, v);//会出现undefined是因为初始值是0,后面没赋值的原因
return total + v ;//51
},0)
console.log(res4);
reduce() ;第二个用法:字符串加连字符'-'
//字符串加连字符'-'
var book = ['星期一', '星期二', '星期三', '星期四'];
var res5 = book.reduce(function(t ,v){//t:指的的就是total 可以随意写,v:指的是元素
return t + v +'-'//星期一-星期二-星期三-星期四-
},'')
console.log(res5);
5.every(function(v,k){}) 每一个元素都满足条件返回true,有一个不满足的则返回false
var ages = [3, 20, 10, 18];
var res3 = ages.every(function(v ,k){
//都大于3
return v > 3;//false
//都大于1
return v >1;//true
})
console.log(res3);
6.some(function(v,k){}) 有一个满足条件的就返回true,都不满足条件返回false
var ages = [3, 20, 10, 18];
// 寻找ages中大于18,和180的
var res2 = ages.some(function(v, k){
//大于18
return v > 18;//true
//大于180
return v >180;//false
})
console.log(res2);
二、断言函数
find() findIndex() 断言函数,找到目标则停止循环
1.find(function(v,k){}) 返回符合条件的元素,如果没有满足条件的则返回undefined.
var ages = [3, 20, 10, 18];
var res = ages.find(function(v, k ){
//v是元素,k是下标
//console.log(v, k);
//返回大于等于10的元素
return v >=10//20
//返回大于等于100的元素,没有返回undefined
return v >=100//undefined
})
console.log(res);
2.findIndex(function(v,k){}) 返回符合条件元素的下标,没有返回-1
// 返回符合条件元素的下标
var ages = [3, 20, 10, 18];
var res1 = ages.findIndex(function(v, k){
//返回大于10的元素下标
return v >10;//1
//返回大于100的元素下标,没有返回-1
return v > 100;//-1
})
console.log(res1);
三、数组的其他方法
1.indexOf(item[,start])里面中括号表示可写可不写 查找目标元素是否存在于数组中,存在返回下标,不存在返回 -1
var arr = ["a", "b", "c", "d", "e"];
//从数组 arr 找出b的位置 .
var res = arr.indexOf("b"); //1 返回的是他的索引(下标)
console.log(res);
//从数组 arr 找出f的位置 .
var res1 = arr.indexOf("f");
console.log(res1);//-1 不存在是-1
2. lastIndexOf()最后一次出现的位置 返回的是下标索引
var arr = [11, 22, 33, 44, 55, 66, 11,66];
var res6 = arr.lastIndexOf(66);//7 返回下标
console.log(res6);
3.includes() 是否包含某个元素,是返回true,不是返回false
var arr = [11, 22, 33, 44, 55, 66, 11,66];
//数组中是否存在11,存在返回true
var res7 = arr.includes(11);//true
//数组中是否存在20,不存在返回false
var res8 = arr.includes(20);//false
console.log(res7);
console.log(res8);
总结
以上是我对于数组方法的总结,初来乍到,请多多指教~