JS学习笔记我爱编程

js各种循环的用法与区别

2018-06-07  本文已影响0人  XKolento

1.for循环

适合于数组的循环,性能一般,还有优化的空间

for(var i =0,len=arr.length;i<len;i++){}

2.for key in 循环 与 for value of

适合json对象的循环

for(var key in obj){
  // key 键,obj代表每个对象,obj[key]代表相对应的值
} 
for(var value of obj){
  // value代表键,obj代表每个对象
} 

let aArray = ['a',123,{a:'1',b:'2'}]
for(let key in aArray){
    console.log(key); //返回 0 1 2
}
for(var value of aArray){
    console.log(value); a 123 {a:'1',b:'2'}
}
以上2者区别:

①推荐在循环对象属性的时候,使用for...in,在遍历数组的时候的时候使用for...of。
②for...in循环出的是key,for...of循环出的是value
③注意,for...of是ES6新引入的特性。修复了ES5引入的for...in的不足
④for...of不能循环普通的对象,需要通过和Object.keys()搭配使用,可终止循环

3.foreach

属于ES5的语法,能够同时获取到key value 数组本身
不能用break,continue语句跳出循环,不能跳过或者终止循环
不能函数内使用return语句

let array = ['a','b','c']
array.forEach((currentValue, index, arr)=>{
  console.log(currentValue); // a b c  必选参数
  console.log(index); //0 1 2 可选参数
  console.log(arr); // abc abc abc 可选参数
})

4.map()

返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。
map() 方法按照原始数组元素顺序依次处理元素。

array.map(function(currentValue,index,arr){
   console.log(currentValue); // a b c  必选参数
  console.log(index); //0 1 2 可选参数
  console.log(arr); // abc abc abc 可选参数
})
以上2者区别:

①map有返回值返回新数组,forEach没有,forEach()允许callback更改原始数组的元素。map()返回新的数组。
②forEach适合于你并不打算改变数据的时候,而只是想用数据做一些事情 – 比如存入数据库或则打印出来。
③map()适用于你要改变数据值的时候。不仅仅在于它更快,而且返回一个新的数组。这样的优点在于你可以使用复合(composition)(map(), filter(), reduce()等组合使用)来玩出更多的花样。
④map的性能优于forEach,快将近70%

5.jquery 中的each

$(selector).each(function(index,element){
  //都是必须的参数
  //index - 选择器的 index 位置
  //element - 当前的元素(也可使用 "this" 选择器)
})

6.filter

filter为“过滤”、“筛选”之意。指数组filter后,返回过滤后的新数组。用法跟map极为相似:
filter的callback函数需要返回布尔值true或false

var arr = [
  {"name":"apple", "count": 2},
  {"name":"orange", "count": 5},
  {"name":"pear", "count": 3},
  {"name":"orange", "count": 16},
];
var newArr = arr.filter((value,index,arr)=>{
  // value 当前元素的值 例如 {"name":"apple", "count": 2}
  // index 0 1 2 等
  // arr 整个数组
  return value.name === "orange"; //返回2个name是orange的数组
});

另外还有一些 reduce,some,every等不常用的方法,
有兴趣可以查阅相应的api了解。

上一篇 下一篇

猜你喜欢

热点阅读