javascript: Array的splice()索引变化

splice(index,delNum,add1,add2...)Array的一个很好用的方法,可以从index值位置开始删除delNum个元素,然后加上add1,add2...;使用该方法在循环遍历中对数组进行修改很好用,但是有个很严峻的问题需要慎重对待,就是————它会改变插入位置以后的值的index。于是我们先来看看这样的问题:


1.给出一个数组,去掉数组中重复的元素:


function deleteSameNumber(list){ for(var i = 0;i

当然,我们可以直接使用delete防止改变index:


//删除数组中相同的元素 function deleteSameNumber(list){ for(var i = 0,len = list.length; i

2.算出一定数值内的所有 质数 :

//计算质数
function prime(num){
    var list = [];
    for(var i = 2; i <= num; i++){ list.push(i);}

    for(var i = 0; i < list.length; i++){
        for(var j = 2; j < list[i]; j++){
            if(list[i] % j == 0){
                list.splice(i,1);    //如1所说,这里会导致原本的list[i+1]变成list[i](new),相当于对下一个数进行计算,但j确实使用上次遗留下来的值并且+1。不过由于计算质数的特殊性,j虽然不是从2开始但也可以判断该数是否有因子。但为了严谨,必须考虑index变化的影响。

                j = 1;    //把j重新初始化,以便对list[i](new)进行判断
            }
        }    
    }
    return list;
}
prime(50);

你可能感兴趣的:(javascript,细节)