2014-10-05 29 views
1

如何使用del函數從數據庫中刪除'test1'?JavaScript - 我如何做一個多維數組拼接?

var db = []; 
function add(input) { 
    for(var key in db) { 
    if(db[key][0]===input[0]) { 
     return; 
    } 
    } 
    db[db.length] = input; 
} 

function edit(input, upgrade) { 
    for(var key in db) { 
    if(db[key][0]===input) { 
     db[key] = upgrade; 
    } 
    } 
} 

function del(input) { 
    var index = db.indexOf(input); 
    if (index !== -1) { 
    db.splice(index, 1); 
    } 
} 

add(['test1', 'online']); 
console.log(db); 

edit('test1', ['test1','offline']); 
console.log(db); 

del('test1'); // FAILED still shows old values 
console.log(db); 

回答

1

實際的問題是不是與splice但與indexOf。只有當被搜索的項目與數組中的對象相同時,它纔會返回項目的索引。所以,你必須推出自己的搜索功能,這樣

function del(input) { 
    var i; 
    for (i = 0; i < db.length; i += 1) { 
     if (db[i][0] === input) { 
      db.splice(i, 1); 
      return; 
     } 
    } 
} 

注:Never iterate an array with for..in。使用正常的for循環。