JS 中是否有“Array.None”等价物?

Kyl*_*Mit 5 javascript linq arrays ecmascript-6

LINQ 有一个类似的问题:在 LINQ 中是否有等价物None()

集合/数组有一些布尔方法:

我可以检查数组中是否没有元素与给定的函数回调匹配

一个可能的解决方法是.filter然后检查.length并确保它为零:

let arr = ["a","b","c"]
// make sure that no item in array = "b"
let noBs = arr.filter(el => el === "b").length === 0
Run Code Online (Sandbox Code Playgroud)

Kyl*_*Mit 20

正如 linq 示例在逻辑上得出的结论

None与 相同!Any,因此您可以按如下方式定义自己的扩展方法:

let none = (arr, callback) => !arr.some(callback)
Run Code Online (Sandbox Code Playgroud)

然后像这样调用:

let arr = ["a","b","c"]
let noBs = none(arr, el => el === "b")
Run Code Online (Sandbox Code Playgroud)

或者,如果您想像这样扩展Array.proto

Object.defineProperty(Array.prototype, 'none', {
    value: function (callback) { return !this.some(callback) }
});
Run Code Online (Sandbox Code Playgroud)

然后像这样调用:

let arr = ["a","b","c"]
let noBs = arr.none(el => el === "b")
Run Code Online (Sandbox Code Playgroud)


Max*_*oll 10

现在不行

目前我正在使用 anArray.some()然后否定整个事情

我个人认为 Array.none 函数会很棒

您可以请求将其添加到 ECMA 的下一版本中。至少可以说,这看起来有点像一个过程,但如果我们想将其添加到 ECMA 中,这就是方法。

  • **警告:** `not every` 与 `none` 不同! (5认同)
  • 我认为你的意思是“Array.some”(据我所知,JS 中没有“any”别名)。 (3认同)