Javascript 删除数组中的特定元素(对象)
我试图删除数组中的多个条目 这些条目是对象,我需要找到满足特定条件的对象Javascript 删除数组中的特定元素(对象),javascript,arrays,object,Javascript,Arrays,Object,我试图删除数组中的多个条目 这些条目是对象,我需要找到满足特定条件的对象 var pending = []; a.forEach(function(entry, index) { if(entry.b == data) { pending.push(index); } }); pending.forEach(function(entry) { a.splice(entry, 1); }
var pending = [];
a.forEach(function(entry, index) {
if(entry.b == data) {
pending.push(index);
}
});
pending.forEach(function(entry) {
a.splice(entry, 1);
});
问题是它只删除了我想要的内容的一半(当b=data
时),甚至删除了一些随机条目
谢谢您的帮助。我假设
a
是一个对象数组,您希望对其进行筛选,以便只保留b
属性等于字符串'data'
的对象。在这种情况下:
//这将输出到控制台,您可能应该按“F12”
变量a=[{
“b”:“数据”
}, {
‘b’:‘其他的东西’
}, {
“b”:“数据”
}, {
b:50
}],
挂起=a.filter(函数(elem){
返回元素b==='数据';
});
控制台日志(待定)代码>什么是a
,什么是数据
?你想保留什么,给我们看一些相关的(尽管是简化的)代码,并填入变量?你可能会从非严格的等式比较中得到误报。您在调试器中已完成此操作了吗?对于每个splice()
,a
中的索引都会对所有>条目进行移位,因此下一个条目将关闭1,下一个关闭2,依此类推。查看.AHH~!没错@JonathanLonowski!我忽略了这个事实!所以,filter()??@cloud1250000是的。David已经发布了一个.filter()
的示例。它不像.splice()
那样是一个突变子,因此它不会改变a
。相反,它创建了一个新的数组
,而不包含可分配回a
作为a=a.filter(…)的过滤元素代码>。所以基本上,我应该重做一个数组,在那里保存我想要的消息?太好了!它工作得很好!我做的是pending=a.filter(函数(elem){returnelem.b!=data;});a=待定;