遍历要领小结
经常运用的遍历要领
- for 遍历
- forEach(对数组的每一个元素实行一次供应的函数)
- map(建立一个新数组,其效果是该数组中的每一个元素都挪用一个供应的函数后返回的效果)
for 遍历人人都熟习,所以重点讲一下forEach 与 map 的区分
雷同点:
- 回调函数参数雷同,都自带三个属性:item / index / array
- 均不会修正原数组
- 第二参数this的指向均指向window(但是运用箭头函数举行修正)
- 只能遍历数组
- 都不能运用轮回跳出语句 break & continue
不同点:
forEach
- 返回值为undefined
map
- 返回值为一个新的数组
- 能够链式挪用
// 链式挪用 var str = 'abcde'; // 运用call在字符范例中运用map要领 Array.prototype.map.call(str, function(x) { return x; }).reverse().join(''); // edcba
其他遍历要领
- filter (建立一个新数组, 其包括经由过程所供应函数完成的测试的一切元素)
- find (返回数组中满足供应的测试函数的第一个元素的值。不然返回 undefined)
- every (测试数组的一切元素是不是都经由过程了指定函数的测试)
- some (测试是不是至少有一个元素经由过程由供应的函数完成的测试)
【Attention】
filter 将遍历一切的元素
find & some & every 属于「前提中缀」遍历(即当元素满足某一前提是返回boolean)
四个要领都不会对原数组举行修正
ES5 中的for…in 遍历
经常运用于对象key值的遍历
ES6 引入的遍历要领
for…of 遍历
[ 前置学问:for…of 可对具有iterator接口的数据构造举行遍历 ]
原生具有iterator接口的数据构造以下:
- Array
- Set
- Map
- String
- TypedArray
- NodeList 对象
- 函数的arguments 对象
keys( ) / values( ) / entries( )
经常运用来遍历对象、数组、set、map构造
【番外】
- 转变原数组的要领
pop、push、reverse、shift、sort、splice、unshift - 不会转变原数组的要领
concat、join、slice、toString、toLocaleString、indexOf、lastIndexOf