2014-10-05 31 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循环。