JavaScript - 我如何进行多维数组的拼接?

时间:2014-10-05 06:44:37

标签: javascript arrays multidimensional-array

如何使用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);

1 个答案:

答案 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循环。