ES5 中新增的一些数组方法

216 阅读3分钟

1.数组方法

用于迭代(遍历)的方法:forEach(), map(), filter(), some(), every() 。

(1)forEach()

语法

array.forEach(function(currentValue, index, arr){
	//逻辑代码...
})
  • currentValue: 数组当前项的值。

  • index: 数组当前项的索引。

  • arr: 数组对象本身 例子:

    //forEach 详解 const arr = [1, 2, 3] let sum = 0 arr.forEach(function (value, index, array){ console.log('每个数组元素' + value) console.log('每个数组元素的索引' + index) console.log('数组本身' + array) console.log('\n') sum += value }) console.log(sum) 打印结果:

(2)filter() (这个方法常用于做筛选工作)

语法:

array.filter(function(currentValue, index, arr){
	//逻辑代码...
})
  • filter() 方法可以创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素,主要用于筛选数组。

  • 它会直接返回一个新数组, 不会改变原来的数组。

  • currentValue 数组当前的数值。

  • index: 数组当前项的索引。

  • arr: 数组对象本身。 例子:比如我想把大于 50 的值取出来

    const arr = [10, 50, 60, 100] //比如我想把大于 50 的值取出来 //这里要定义一个变量来接受 return 返回来的值。 let newArr = arr.filter(function (value, index, array){ //这里只要将值返回就可以了 return value > 50 }) console.log(newArr) 打印结果:

map()

map() 对象保存键值对,并且能够记住键的原始插入顺序。任何值(对象或者原始值)都可以作为一个键或一个值。 一个Map对象在迭代时会根据对象中元素的插入顺序来进行 — 一个 for...of 循环在每次迭代后会返回一个形式为[key,value]的数组。

语法:

array.map(function(currentValue, index, arr){
	//逻辑代码...
})
  • map() 方法返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。
  • map() 方法按照原始数组元素顺序依次处理元素。 小细节:filter 是将符合条件的元素组成一个新数组,而 map 是将每一个元素调用函数后的结果都返回。

例子:将数组中的元素乘二

const arr1 = [2, 10, 30, 50, 100]
const newArr = arr1.map(function (value, index, array){
    return value * 2
})
console.log(newArr)

打印结果:

some()

语法:

array.some(function(){currentValue, index, array}{
	//逻辑代码...
})
  • some() 方法用于检测数组中的元素是否满足指定条件。

  • 它返回的是布尔值,如果查找到了这个元素,就返回 true ,如果没找到就返回 false 。

  • 如果找到第一个满足条件的元素将返回 true ,而且不会再继续的循环查找下去,将直接中止遍历。

  • currenValue 数组当前的数值。

  • index: 数组当前项的索引。

  • arr: 数组对象本身。 例子:查找是否有 50 的数值

    const arr = [10, 50, 60, 100] //设置一个 flag 来接收 return 的值 let flag = arr.some(function (value, index, array){ return value == 50 }) console.log(flag) 打印结果:

every()

语法:

array.every(function(currentValue, index, array){
	//逻辑代码...
})
  • every() 方法用于检测数组中的所有元素是否符合检测条件。
  • 如果有一个不符合检测条件将直接返回 false ,遍历也中止不再继续执行,除非所有的元素符合检测条件才会返回 true 。

例子:数组内的元素是否都是偶数

const arr1 = [2, 4, 6]
const flag = arr1.every(function (value, index, array){
    return value % 2 == 0
})
console.log(flag)

打印结果: