在javascript中切片数组

时间:2016-07-20 16:47:34

标签: javascript

我正在尝试在使用其中的项目后对数组进行切片,但代码不是这样做的:

vm.removeItem = function() {
  for(let i = 0; i < vm.array.length; i++) {
    if(vm.array[i].item === vm.item) {
      vm.array.splice(i, 1);
      break;
    }
  }
};

我做错了吗?

3 个答案:

答案 0 :(得分:0)

正在假设一个虚拟代码。要删除的项目存储在项目中。 在调用removeItem之后,将其删除。

var vm = {
  array: [{
    lp: 1
  }, {
    lp: 2
  }, {
    lp: 3
  }],
  item: 2
};

vm.removeItem = function() {
  for (let i = 0; i < vm.array.length; i++) {
    if (vm.array[i].lp === vm.item) {
      vm.array.splice(i, 1);
      break;
    }
  }
};

vm.removeItem();
console.log(vm.array);

答案 1 :(得分:0)

根据您现有的代码,您的vm结构似乎如此:

var vm = {
  item: 'ef',
  array: [ {item: 'ab'}, {item : 'cd'}, {item: 'ef'}, {item: 'gh'} ]
};

如果您要从vm.array移除item属性为vm.item的元素,您可以执行以下操作:

vm.array = vm.array.filter(function(e) { return e.item != vm.item; });

但是,我认为您的代码应该按预期工作并执行完全相同的操作。所以,问题可能在其他地方。

答案 2 :(得分:0)

这可能是Remove a particular element from an array in JavaScript?

的副本

无论如何,你总能做到这样的事情:

function remove(arr, item) {
  for(var i = arr.length; i--;) {
    if(arr[i] === item) {
      arr.splice(i, 1);
    }
  }
}

以下是用法:

// an array
var entries = [
    {name:'Tim'},
  {name:'John'}
];
// add an item to the array
var mark = {name:'Mark'};
entries.push(mark);

// you can see it's in the array now
entries.forEach(x => console.log(x.name));

// remove it from the array
remove(entries,mark );

// you can see it's not there now
entries.forEach(x => console.log(x.name));