JS数组循环遍历常用的9种方法

JavaScript09

JS数组循环遍历常用的9种方法,第1张

首先定义一个数组

const arr = [1,2,3,4,5,6]

第一种:for循环

for (let i = 0i<arr.lengthi++){

   console.log(arr[i])

}

for(j=0,len=arr.lengthj<lenj++){}//这种方法基本上是所有循环遍历方法中性能最高的一种

第二种 for of (需要ES6支持) 性能要好于forin,但仍然比不上普通for循环

for (let value of arr){

       console.log(value)

}

第三种 for in 它的效率是最低的

for (let i in arr){

      console.log(arr[i])

 }

第四种 foreach() 实际上性能比普通for循环弱

    1、箭头函数写法

    arr.forEach(value =>{

        console.log(value)

    })

    2、普通函数写法

    arr.forEach(function(value){

       console.log(value)

     })

第五种 entries()

for (let [index, value] of arr.entries()) {

     console.log(value)

 }

第六种 keys()

for (let inx of arr.keys()){

console.log(arr[inx])

}

第七种 reduce()

1、箭头函数

arr.reduce((pre,cur)=>{

       console.log(cur)

 })

2、普通函数

arr.reduce(function(pre,cur){

     console.log(cur)

})

第八种 map() 但实际效率还比不上foreach

1、箭头函数

 arr.map(value=>{

       console.log(value)

 })

2、普通函数

arr.map(function(value){

      console.log(value)

})

第九种 values()

for (let value of arr.values()){

       console.log(value)

 }

题目描述:在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。一个简单的数组遍历题。

答案:js语言:

functionFind(target, array){returnarray.some(arr =>arr.some(e =>e === target))}

解释:

外面的some方法是对每个一维进行遍历,里面的some方法是对每个一维的每一个元素进行遍历,判断是否严格等于要找的target元素,复杂度为n方。

 =>是es6语法中的arrow function

例:(x) =>x + 6 相当于

function(x){

    return x + 6

}

那么e =>e === target表示返回严格等于target的元素e

some()方法用于检测数组中的元素是否满足指定条件

some() 方法会依次执行数组的每个元素:

如果有一个元素满足条件,则表达式返回 true  , 剩余的元素不会再执行检测。

如果没有满足条件的元素,则返回false。

注意:  some() 不会对空数组进行检测。

注意:  some() 不会改变原始数组。

这里小记一下some以及类似的every,对比一下其他遍历方法

some() 有一个元素满足条件,即返回true

const a = [1, 2, 3]console.log(a.some(v =>v >5))  //falseconsole.log(a.some(v =>v <2))  //true

every() 所有元素满足条件,即返回true

const a = [1, 2, 3]console.log(a.every(v =>v <5))  //trueconsole.log(a.every(v =>v <2))  //false

filter() 返回包含满足条件元素的数组

const a = [1, 2, 3]

console.log(a.filter(v =>v <3))  // [1, 2]

map() 返回一个新数组

const a = [1, 2, 3]

console.log(a.map(v =>v + 5))  // [6, 7, 8]

forEach() 仅循环,无返回值,本质上相当于for

const a = [1, 2, 3]

a.forEach(v =>console.log(v))  // 1    2    3