Javascript 为什么筛选后数组为空?

Javascript 为什么筛选后数组为空?,javascript,arrays,node.js,Javascript,Arrays,Node.js,我试图过滤数组中的一些对象。但当我这样做时,我只得到一个空数组 代码: 数组: [ { owner: false, permissions: 2146958463, icon: 'e568d2b87e31358588cb982354628d51', id: '267920024570691586', name: 'Hydra' }, { owner: true, permissions: 2146958463, icon: null,

我试图过滤数组中的一些对象。但当我这样做时,我只得到一个空数组

代码:

数组:

[ 
  { owner: false,
    permissions: 2146958463,
    icon: 'e568d2b87e31358588cb982354628d51',
    id: '267920024570691586',
    name: 'Hydra' },
  { owner: true,
    permissions: 2146958463,
    icon: null,
    id: '269159705794838529',
    name: 'test 2' } ]

(我删除了大多数对象,但它们看起来都是这样的)

字符串
'true'
与布尔常量
true
不同

==
的一侧是布尔值,而另一侧是其他值时,将该布尔值转换为数字后进行比较。因此

'true' == true
按以下方式执行:

'true' == 1
试试这个:

let guilds = guildsData.filter((el) => {
    return el.owner;
});

无需将
true
'true'
进行比较(它们无论如何都不相同)。

因为
为“true”!=真的
这看起来像一个真实/虚假的问题,el.owner的预期类型是什么?如果要再次比较字符串值
true
,则需要使用
el.owner==“true”
,它将比较值和
el.owner的类型。如果el.owner是一个布尔值,那么您可以使用
let guilds=guildsddata.filter(x=>x.owner)进行过滤
@Kinduser我真的不知道你的意思,我不明白这个问题和这个有什么关系。谢谢,我现在觉得自己很愚蠢
let guilds = guildsData.filter((el) => {
    return el.owner;
});