javascript - 无法从数组中过滤对象

标签 javascript arrays object filter

我正在尝试使用以下方法从数组中过滤出一个对象:

foo = [{foo: 'bar'}, {baz: 'bar'}];
bar = foo.filter(function(i) {
  return i !== {foo: 'bar'}
})

当我之后记录 bar 时,我得到了完整的数组。

下面的代码

foo.filter(function(i) {
  console.log(i === {foo: 'bar'});
  console.log(i);
  console.log({foo: 'bar'});
  return i !== {foo: 'bar'}
})

返回:

false
{ foo: 'bar' }
{ foo: 'bar' }
false
{ baz: 'bar' }
{ foo: 'bar' }
[ { foo: 'bar' }, { baz: 'bar' } ]

我在这里错过了什么??

最佳答案

这会起作用:

const foo = [{foo: 'bar'}, {baz: 'bar'}];
const bar = foo.filter(function(i) {
  return i.foo !== 'bar'
});

console.log(bar);

您应该比较属性“foo”本身,而不是比较两个对象

关于javascript - 无法从数组中过滤对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57600147/

相关文章:

javascript - 使用两个排序条件对javascript中的对象数组进行排序

javascript - Backbone : Batch save models in single request?

javascript - Jsctags 不工作

java - 将数组元素相加并将它们存储到另一个数组中? ( java )

arrays - 反循环缓冲区

javascript - 查询对象图?

c# - 检查对象的实例是否是只读的

javascript - 当数据结构与 Mongoose 中的模型完全匹配时,如何一次增加多个字段?

javascript - getElementsByTagName() 为自定义标签返回 0 个结果

arrays - 从 bash 数组中提取 x 个随机值