当前位置: 移动技术网 > IT编程>开发语言>JavaScript > js循环

js循环

2019年07月26日  | 移动技术网IT编程  | 我要评论
var arr =[1,2,3,4,5,6] //全文通用数组,个别除外

while

var i=0;

while(i<=arr.length-1){ //条件需要有限制,故<=,否则会死循环

    console.log(arr[i],i)

    i++;//更新下标

}

do while

var  i=0;

do{

    console.log(arr[i],i)

    i++;

}while(i<=arr.length-1);//下标从0开始,length-1

for

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

    console.log(i,arr[i])

}

for in

for(key in arr){

    console.log(key,arr[key])

} 

es6语法

//array.fromie不识别,ie的兼容写法。

//可以把类数组对象转换为真正的数组

if(!array.from){
  array.from = function (el) {
  return array.apply(this, el);
 }
} 

set

var a=[1,1,1];

var b=new set(a);//去重

console.log(b)

b.add('li')//添加

b.delete('li') //删除

b.has('li') //返回true false;

b.clear()//清空 

map

var emap = new map([ ['a', 1],['b', 2],['c', 3] ]);

emap.get('a') //1 //获取值

emap.has('b')//true //检测key是否存在,返回true false;

emap.delete('c') //删除

emap.set('c',3) //添加

emap.clear()//清空

//相当于返回一个新数组
arr.map(function(x){
  if(x==3){
    return x*3
  }   return x
}) arr.map((x)=>{   if(x==3){
    return x*3
  }   return x }) 

foreach

//两个参数 x数组内容,y数组下标

arr.foreach((x,y)=>{

    console.log(x,y)

})

//不支持ie9以下,但不包括ie9,ie8兼容写法

//原文链接:

if ( !array.prototype.foreach ) {

    array.prototype.foreach = function foreach( callback, thisarg ) {

        var t, k;

        if ( this == null ) {
            throw new typeerror( "this is null or not defined" );
        }
        var o = object(this);
        var len = o.length >>> 0;
        if ( typeof callback !== "function" ) {
            throw new typeerror( callback + " is not a function" );
        }
        if ( arguments.length > 1 ) {
            t = thisarg;
        }
        k = 0;

        while( k < len ) {

            var kvalue;
            if ( k in o ) {

                kvalue = o[ k ];
                callback.call( t, kvalue, k, o );
            }
            k++;
        }
    };
}

for of

//支持大多数类数组对象 参考https://developer.mozilla.org/en-us/docs/web/api/nodelist

//不支持普通对象遍历 如:{ } 会报错 is not iterable

//ie不支持

for(var i of arr){

    console.log(i,arr[i-1])//for of的下标从1开始,故减1

}

  

//部分类数组对象 //原文链接: 

 // 字符串
        var str = "hello";
        
        for (let s of str) {
          console.log(s); // h e l l o
        }
        
// dom nodelist对象
        let paras = document.queryselectorall("p");
        
        for (let p of paras) {
          p.classlist.add("test");
        }
        
// arguments对象
        function printargs() {
          for (let x of arguments) {
            console.log(x);
          }
        }
        printargs('a', 'b');// 'a' 'b'
//循环控制语句
//break:当前条件成立且执行后跳出。 //continue:跳过当前成立条件,继续执行循环。   //for循环,continue之后执行语句,是跳过条件的新下标。   //while、do-while循环,continue需放到i++之后使用,否则,continue将跳过i++进入死循环。 for(var i = 1; i < 10; i++){  if(i == 4){ continue; } console.log(i);//1 2 3 5 6 7 8 9 } for(var i = 1; i < 10; i++){ if(i == 4){ break; } console.log(i);//1 2 3 }

  

      //箭头函数单行语句可以简写,如:arr.map((x)=>x);

    //es6新增了 遍历器(iterator)机制 iterator详解 :  http://es6.ruanyifeng.com/#docs/iterator

  //es6语法推荐使用编译插件来处理兼容性问题 如:babel

//以上为理解、原文、参考、暂时就想到这么多

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网