2013-04-10 51 views
1
var myList = []; 
myList.push({ololo: "ololo0"}); 
myList.push({ololo: "ololo1"}); 
myList.push({ololo: "ololo2"}); 
console.log(myList); 

結果:JS數組從元素刪除無間隙

[Object { ololo="ololo0"}, Object { ololo="ololo1"}, Object { ololo="ololo2"}] 

問題:我怎麼沒有差距在哪裏它是刪除第二個(myList[1])元素?
即這樣:

myList[0] = {ololo: "ololo0"} 
myList[1] = {ololo: "ololo1"} 
myList[2] = {ololo: "ololo2"} 

應該是:

myList[0] = {ololo: "ololo0"} 
myList[1] = {ololo: "ololo2"} 

回答

2
var myList = []; 
myList.push({ololo: "ololo0"}); 
myList.push({ololo: "ololo1"}); 
myList.push({ololo: "ololo2"}); 
console.log(myList); 

console.log(remove(myList,1)); 


function remove(arr, index){ 
    arr.splice(index,1); 
    return arr; 
} 

工作實施例http://jsfiddle.net/qzFuj/

+0

筆記,它工作在線性時間 - 它是相當於創建一個新數組並將所有項目複製到其中,並省略刪除的項目。 – 2013-07-11 23:22:09

1

使用splice

array.splice(index , howMany[, element1[, ...[, elementN]]])

更改數組的內容,添加新元素,同時刪除舊元素。

刪除第二個元素:myList.splice(1, 1)

2

試試這個:

刪除不會伎倆。但是Array.splice會做到這一點。

myList.splice(指數1)

0

這裏是你的期望,你想

如果你使用splice它適合你

var myList = []; 
myList.push({ololo: "ololo0"}); 
myList.push({ololo: "ololo1"}); 
myList.push({ololo: "ololo2"}); 

    ///////////////////////splice IS APPLIED//////////////////////////// 
    myList.splice(0, 1) 
    /////////////////////////////////////////////////////////////////// 

console.log(myList); 

輸出(注該索引0已完全刪除!)

[Object { ololo= 

"ololo1" 

}, 
Object { ololo= 

"ololo2" 

}] 

如果您使用delete,它不會隨身攜帶!這裏是它的樣子!

var myList = []; 
    myList.push({ololo: "ololo0"}); 
    myList.push({ololo: "ololo1"}); 
    myList.push({ololo: "ololo2"}); 

    ////////////////DELETE IS APPLIED/////////////////////////////////// 
    delete myList[0] 
//////////////////////////////////////////////////////////////////// 

    console.log(myList); 

輸出:(主要是看未定義在索引0處)

[ 

    undefined 

    , Object { ololo= 

    "ololo1" 

    }, Object { ololo= 

    "ololo2" 

    }]