我正在尝试在使用其中的项目后对数组进行切片,但代码不是这样做的:
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;
}
}
};
我做错了吗?
答案 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));