forEach()

forEach()方法对数组的每个元素执行,进行遍历。

  • 数组元素
  • 数组下表
  • 数组本身
  1. let arr = ['a','b','c','d','e'];
  2. let forEach = arr.forEach((ele,idx,arr)=>{
  3. console.log(ele); //遍历数组元素
  4. console.log(idx); //数组下标
  5. console.log(arr); //数组本身
  6. })

filter()

filter()方法,返回一个新数组不改变原来数组,常用语删除某一项。必须有return

  1. arr = ['a','b','c','d','e'];
  2. let filterArr = arr.filter((ele,idx,arr)=>{
  3. return ele !== 'b'
  4. })
  5. console.log(filterArr); // [ 'a', 'c', 'd', 'e' ]

map()

map()方法,返回一个新数组,常用语修改数组某一项。必须有return

  1. arr = ['a', 'b', 'c', 'd', 'e'];
  2. let mapArr = arr.map((ele,idx,arr)=>{
  3. if(ele === 'a'){
  4. return 1
  5. }
  6. return ele
  7. })
  8. 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
}