數組之map方法

數組的map方法會循環數組,在函數裏對數組的每一項進行處理,最後返回一個處理後的函數;可是若是咱們在函數裏對數組自己進行改變的話會怎樣呢?數組

       var removeElement = function(nums, val) {
            nums.map(function (item, index){
                if(item === val){
                    console.log(index); // 2 3
                    nums.splice(index, 1);
                }
            });
        };
        removeElement([1,2,3,4,3,5], 3);

經過以上例子能夠看出,若是咱們在某一次循環改變原數組的話,那麼接下來循環的處理是在已經改變的數組的基礎上進行的。函數

        var removeElement = function(nums, val) {
            nums.map(function (item, index){
                if(item === val){
                    nums.splice(index, 1); // 已經刪除數組的索引爲2的項了,後一個2就變成索引爲2的項了,然而已經處理過索引2了,因此2這個索引就沒處理,致使有一個2沒有刪除掉。
                }
            });
        };
        removeElement([0,1,2,2,3,0,4,2], 2);

以上代碼中若是是這樣的數組:[0,1,2,2,2,3,0,4,2] ,nums爲[0, 1, 2, 3, 0, 4];若是是[0,1,2,2,2,2,3,0,4,2] ,nums爲[0, 1, 2, 2, 3, 0, 4] spa

相關文章
相關標籤/搜索