如何使用del函数从db中删除'test1'?
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);
答案 0 :(得分: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
循环。