forEach()
forEach()
方法对数组的每个元素执行,进行遍历。
let arr = ['a','b','c','d','e'];
let forEach = arr.forEach((ele,idx,arr)=>{
console.log(ele); //遍历数组元素
console.log(idx); //数组下标
console.log(arr); //数组本身
})
filter()
filter()
方法,返回一个新数组
不改变原来数组,常用语删除某一项。必须有return
arr = ['a','b','c','d','e'];
let filterArr = arr.filter((ele,idx,arr)=>{
return ele !== 'b'
})
console.log(filterArr); // [ 'a', 'c', 'd', 'e' ]
map()
map()
方法,返回一个新数组,常用语修改数组某一项。必须有return
。
arr = ['a', 'b', 'c', 'd', 'e'];
let mapArr = arr.map((ele,idx,arr)=>{
if(ele === 'a'){
return 1
}
return ele
})
console.log(mapArr);
for…in
for...in...
可以遍历除symbol
值以外的任意对象。
let obj = {a:1, b:2, c:3};1
for (k in obj) {
console.log(k,obj[k]); // k是key值 obj[k]是value值
// a 1
// b 2
// c 3
}
let arr = [1,2,3]
for(k in arr){
console.log(k,arr[k]); // k下标 arr[k]参数
// 0 1
// 1 2
// 2 3
}
for…of
for..of
多用于遍历数组。
const arr = ['a', 'b', 'c'];
for (k of arr) {
console.log(k);
// "a"
// "b"
// "c"
}
// 遍历对象需要使用Object.keys或者Object.values
let obj = {name:'小明',age:18};
for(k of Object.keys(obj)){
console.log(k) // name age
}
let obj = {name:'小明',age:18};
for(k of Object.values(obj)){
console.log(k) // 小明 18
}
for..in和for…of的区别
- 1.
for...in
循环出的是key值,for...of
循环出的是value值 - 2.推荐在循环对象属性的时候,使用
for...in
,在遍历数组的时候的时候使用for...of
- 3.
for...of
不能循环普通的对象,需要通过和Object.keys()
搭配使用 - 4.
from...in
会继承原型链上的属性,需要配合hsaOwnProperty
来枚举自己的属性,而不是继承来的属性。
Object.prototype.objCustom = function() {};
Array.prototype.arrCustom = function() {};
let iterable = [3, 5, 7];
iterable.foo = 'hello';
// 继承原型上的属性
for (let i in iterable) {
console.log(i); // logs 0, 1, 2, "foo", "arrCustom", "objCustom"
}
// 通过hasOwnProperty来判断自己的属性。
for (let i in iterable) {
if (iterable.hasOwnProperty(i)) {
console.log(i); // logs 0, 1, 2, "foo"
}
}
// of直接遍历自己存在的参数。
for (let i of iterable) {
console.log(i); // logs 3, 5, 7
}