PS:正则表达式
本文属于纯新手向的文章,目的在于帮助本身加深记忆以及帮助小白同窗整理JS中经常使用的一些字符串和数组的方法,因此望大佬勿喷。api
前文写了些字符串和数组一些基础的api
,本文写一些数组的功能更强大的api
,没有看过前文的,能够点击如下连接:数组
字符串还有一些结合正则表达式使用的很是棒的方法,之后单独和正则表达式一块儿讲解。post
下面进入正题。测试
Array.from()
传入一个类数组或可迭代对象(一般是字符串),返回一个新数组ui
/*加入页面有10个li标签*/
let aLi = document.getElementsByTagName("li");
console.log(aLi);//aLi 是一个类数组
aLi.forEach((item,idx)=>{//forEach()用于遍历数组 后面讲解
item.onclick = ()=>{
console.log(idx);
}
});
复制代码
forEach()
只能遍历数组,
aLi
不是数组,因此会报错。
使用Array.from()
建立一个新数组后,报错消失spa
Array.from(aLi).forEach((item,idx)=>{
item.onclick = ()=>{
console.log(idx);
}
});
复制代码
固然使用ES6的...
运算符,能够更方便地达到这一效果3d
[...aLi].forEach((item,idx)=>{
item.onclick = ()=>{
console.log(idx);
}
});
复制代码
也能够传入字符串返回一个新数组code
let str = "文体两开花";
console.log(Array.from(str));
console.log(str.split(""));
复制代码
如下方法都不改变原数组且它们参数传递方式都相同,以下面的形式:
array.xxxx( function(currentValue,index,arr ) )
currentValue
当前元素的值index
当前元素的索引值 (可选)arr
调用该方法的数组对象(可选,基本不用)Array.find()
返回第一个return
值为true
的元素,没有则返回undefined
let arr = [1,6,7,8];
console.log(arr.find(item => item > 5));//6
console.log(arr.find((item, idx) => {
return arr[idx] < 0;
}));//undefined
复制代码
Array.forEach()
用于遍历数组,不返回任何值
let arr = [1,2,3,4,5,6,7];
let arr1 = [];
arr.forEach(val=>{
arr1.push(val*2);
})
console.log(arr1);
复制代码
Array.map()
该方法也能够遍历数组,可是它和forEach()
不一样的是,它返回一个数组,数组接收的是每次循环的返回值
let arr = [1,2,3,4,5,6,7];
console.log(arr.map(val => {
return val*2
}));
复制代码
Array.filter()
用于筛选数据,当return
返回值为true
时,将该元素放入新数组中,最后返回新数组
let arr = [1,2,3,4,5,6,7];
console.log(arr.filter(val => val % 2));
复制代码
Array.every()
该方法用于测试,数组的每一项元素是否符合条件,当有任意一项不符合要求时(即返回值为false),当即返回false
,只有全部元素都经过检测时,才返回true
let arr = [1,2,3,4,5,6,7];
console.log(arr.every(val => val % 2));//false
console.log(arr.every(val => val > 0));//true
复制代码
Array.some()
该方法和Array.every()
相对,该方法只要有一项元素符合要求(回调函数返回值为true
),便当即返回true
;
let arr = [1,2,3,4,5,6,7];
console.log(arr.some(val => val % 2));//true
console.log(arr.some(val => val < 0));//false
复制代码
for...in
和for...of
两种方法均可以遍历数组,它们的区别:
for...in
还能够遍历对象,for...of
不行for...in
遍历的键名,for...of
遍历的是键值for...in
遍历的效能极差,由于它还会去遍历原型链具体使用:
let arr = [1,2,3,4,5];
for(let key in arr){
console.log(arr[key]);
}
for(let key of arr){
console.log(key);
}
复制代码
使用for...in
遍历对象
let obj = {
name: "品如",
age: 18,
height: 170,
}
for (let key in obj) {
console.log(obj[key]);
}
复制代码