虽然网上总结的都特别好,但我还是记录一下自己用到过的数组方法们.
没用到过的就先记下来想用的时候再来看~ (肯定是不全的,也许有的还不太对,错了就再改8,蓝瘦....)
毕竟我这脑子是真的记不太住的,敲一遍总结一下还是有好处
遍历数组的方法们:
1.map
map给定了三个参数,value值,下标Index,还有原数组array
return回的是一个新数组,可以在函数体内做操作返回想要的数组
var arr = [2, 3, 4];
var newArr = arr.map(function (value, index, array) {
console.log(value, index, array);
return value + 1;
});
2.foreach
foreach和map同理,也给定了一样的三个参数
但是注意:foreach内不能使用break或return跳出循环,就没有返回值
var arr = [1, 2, 3, 4];
arr.forEach(function (value, index, array) {
console.log(value, index, array);
})
3.some和every
- some()
有一个符合条件,则返回为真 不再执行
如果没有就返回false
some只要有true即返回不再执行了
var scores = [5,10,2,3];
var result = scores.some(function (value) {
console.log(value);
return value > 7;//true
})
console.log(result);//5 10 true
- every()
所有符合条件,则返回为真
每一个都会判断
如果遇到不符合条件 返回false 不再执行
var scores = [5,8,1,10];
var result = scores.every(function (value) {
console.log(value);
return value > 2;
})
console.log(result);// 5 8 1 false
4.filter
把数组中某些元素过滤掉,返回剩下的元素组成新数组
filter 把传入的函数一次作用于每个元素,然后根据返回值是true还是false决定保留还是丢弃该元素
//保留偶数
var arr = [1, 2, 4, 5, 6, 9, 10, 15];
var newArr = arr.filter(function (value) {
return value % 2 == 0;
})
console.log(newArr);// [2, 4, 6, 10]
filter的这种特性可以用来做数组去重:
判断下标是否等于,不等于就是重复元素,返回false 会被filter处理掉
var arr = [1,2,3,4,1,3,5];
var theArr = arr.filter(function (value, index, array) {
return array.indexOf(value) == index;
})
console.log(theArr);//[1, 2, 3, 4, 5]
5.for of
for of是我之前在使用foreach时发现不能return我想要的东西,搜百度发现它可以return
let arr=[1,2,3,4,5,6];
for (let value of arr){
if (value==2){
return value;
}
}
6.find
find中的回调函数也默认给定三个参数,当前的value,下标Index,元素组array
其作用是遍历查找数组中符合条件的元素,回调函数返回true,如果没有就返回undefined
find返回查找到的符合条件的此元素
(用了一个别人写的例子)
[1, 4, -5, 10].find((n) => n < 0)
// -5
[1, 5, 10, 15].find(function(value, index, arr) {
return value > 9;
}) // 10
7.findIndex
此方法依然可以有那三个参数
其作用可以是查找符合条件的元素的下标,如果没有就返回-1
find得到的还是那个符合条件的元素的下标
[1, 5, 10, 15].findIndex(function(value, index, arr) {
return value > 9;
}) // 2
其他方法们:
1.lastIndexOf
写一个参数时:寻找这个参数在数组中最后出现的下标
两个参数时:
arr.lastIndexOf(a,b):从数组中的第b位开始从后向前搜索a,不存在返回-1
var arr = [1,1,1,1,2,3,4,5,6,2,7];
console.log(arr.lastIndexOf(2));
//最后一个2的下标 9
console.log(arr.lastIndexOf(2,3));
//从索引值小3 从后向前找 不存在2 所以是-1
2.indexOf
与lastIndexOf相反
作用是查找元素在数组中第一次出现的位置,返回的是下标,没有返回-1
var a = [1, 2, 3, 4, 5];
var b = a.indexOf(2);
var c = a.indexOf(6);
console.log(b); // 1
console.log(c); // -1
3.reduce
previous: 当前元素之前的所有元素之和
current:当前元素
var arr = [1, 2, 3, 4, 5, 6];
var sum = arr.reduce(function (previous, current) {
/**
*
*这里求的是 当前元素和之前所有元素之和
1 2 1=1 2
3 3 1+2=3 3
6 4 1+2+3=6 4
10 5 1+2+3+4=10 5
15 6 1+2+3+4+5=15 6 */
console.log(previous, current);
return previous + current;
})
字符串和其他方法:
最近碰到的字符串方法也写一下好了
1.includes
ES6新增字符串方法 str.includes() 包含就返回真,进入If判断,不包含返回假
var newList1=this.list.filter((value)=>{
//ES6新增字符串方法 str.includes() 包含就返回真,进入If判断,不包含返回假
if (value.name.includes(kw)){
//把需要的value返回给新数组
return value;
}
});
2.padStart&&padEnd
在遇到需要写时间的时候,一般的格式是2018-01-08,但是我们获取的时间是个位数,就可以用这个方法来补位0
参数一:最大的位数长度
参数二:不满足长度的话,用开头什么数字补齐
padStart:在开头什么数字补齐
padEnd:在尾部用什么数字补齐
var str="8";
//padStart方法
//参数一:最大的位数长度
//参数二:不满足长度的话,用开头什么数字补齐
//padEnd:在尾部用什么数字补齐
var newStr=str.padStart(2,0);
console.log(newStr);//08
3.in json
判断某个json中是否含有某个key 可以直接 "要查找的key" in 被查找的json
返回的值是true或false
let thejson = {
name: "佩奇",
age: 3
}
//判断是否有key值
let a = "id" in thejson;
console.log(a);
感觉常用到的大概就这么多啦,以后再添加
今天也有好好加油鸭!