如何将 Array.prototype.filter 与多个逻辑 OR || 一起使用 表达式?

Sum*_*omo 0 javascript

我想使用Object.fromEntriesand根据键或值过滤对象Object.entries,但是当我尝试使用逻辑 OR || 时 我不能做我想做的事。有没有一种好的解决方案,无需引入其他方法或循环?

const object1 = { a: 1, b: 2, c: 3 };

const object4 = Object
                 .fromEntries(Object
                                .entries(object1)
                                .filter(([key, val])=>key!=="a"||val!== 2));
                                                  // logic goes wrong!


console.log(object4);
// { a: 1, b: 2, c: 3 } I want { c: 3 }, filter any key with "a" or value with 2
Run Code Online (Sandbox Code Playgroud)

我想要一个正确的布尔 OR,如果它的任何参数为 true,则返回 true,否则返回 false。我读过 JS 做了一些奇怪的事情,但是如何排序呢?

Mat*_*int 5

要获得您正在寻找的操作,您需要逻辑AND运算符,而不是OR

key !== "a" && val !== 2
Run Code Online (Sandbox Code Playgroud)

或者,您可以使用OR来表达它,通过否定整个表达式,使用正比较而不是负比较。

!(key === "a" || val === 2)
Run Code Online (Sandbox Code Playgroud)