数组、字符串、对象遍历方法集锦


数组、字符串、对象遍历方法

params

var array=[1,2,34,56,7,8,8];
var str="asdadaawsadf";
var Params = {
  name: '张三',
  age: '19',
  sex:'男'
}

基础for循环

  • 传统方式
//遍历Array
for(var i = 0 ; i < array.length; i++){
    console.log(array[i]);
}

//遍历object
//Object.length===undefined;
//所以不能使用传统for循环遍历对象

//遍历string
for(var i = 0 ; i < str.length; i++){
    console.log(str[i]);
}

for…in循环

  • 为遍历对象而生
  • 全能,可以遍历数组、对象、字符串
for (var i in ArrayList) {
  console.log(ArrayList[i])   // i输出为index索引
}
for (var i in ObjectParams) {
  console.log(ObjectParams[i])  // i输出为key
}
for (var i in StringParams) {
  console.log(StringParams[i])  // i输出为index索引
}

for of 循环(ES6引入)

for (let i of ArrayList) {
  console.log(i)   //输出数组中的每一个元素
}
// 数组原生具备iterator接口(即默认部署了Symbol.iterator属性),for...of循环本质上就是调用这个接口产生的遍历器
ObjectParams[Symbol.iterator] = ArrayList[Symbol.iterator].bind(ArrayList)
for (let i of ObjectParams) {
  console.log(i)  // 输出结果与直接遍历ArrayList一样,Object默认是不具备Symbol.iterator属性的,因此无法对Object用for of进行遍历
}  
for (let i of StringParams) {
  console.log(i)  
}

forEach循环(数组特有,不可break)

  • forEach()这个方法只支持IE8以上的浏览器
    IE8及以下的浏览器均不支持该方法,所以如果需要兼容IE8,则不要使用forEach
    还是使用for循环来遍历

  • forEach()方法需要一个函数作为参数

    像这种函数,由我们创建但是不由我们调用的,我们称为回调函数

    数组中有几个元素函数就会执行几次,每次执行时,浏览器会将遍历到的元素

    以实参的形式传递进来,我们可以来定义形参,来读取这些内容

    • 浏览器会在回调函数中传递三个参数:

      • 第一个参数,就是当前正在遍历的元素

      • 第二个参数,就是当前正在遍历的元素的索引

      • 第三个参数,就是正在遍历的数组

arr.forEach(function(value , index , obj){
     console.log(value);
});
//第二个和第三个参数可选,value参数必须写

while循环

let i = 0
while (i < ArrayList.length){
  console.log(ArrayList[i])
  i++
}

let j = 0
// 你会发现它并没有走进这个while循环,因为ObjectParams.length === undefined
while (j < ObjectParams.length){
  console.log(ObjectParams[j])
  j++
}

let k = 0
while (k < StringParams.length){
  console.log(StringParams[k])
  k++
}

do while循环

let i = 0
do {
  console.log(ArrayList[i])
  i++
}
while (i < ArrayList.length)
//其他与while循环一致

map(数组特有,不可break)

ArrayList.map((item, index) => {
  console.log(item, index)
})

总结

遍历数组用forEach、map(如果你不需要中断它),需要中断的话就选for…of吧
遍历字符串for..of, for…in
遍历对象for…in
while和do while的区别 while先判断条件,do while先执行一次再判断条件。


文章作者: 时光路人
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 时光路人 !
评论
  目录