gpt4 book ai didi

javascript - 如何取反 Array.protype.filter 函数

转载 作者:行者123 更新时间:2023-11-30 07:20:52 25 4
gpt4 key购买 nike

我正在使用 Array.prototype.filter() 方法将数组过滤为 2 组元素,然后使用 Knockout 遍历这 2 组元素,但我认为问题与 JS 相关。我想采用真值元素并设置 A 和假值并设置 B。因此,对于假值,我试图否定该函数,但出现以下错误。我可以创建第二种方法来执行否定,但是我对这个解决方案很感兴趣。谢谢。

Array.prototype.filter: argument is not a Function object

HTML:

<!-- ko foreach: Items.filter(IsSetA) -->
<h1>Is Set A</h1>
<!-- /ko -->

<!-- ko foreach: Items.filter(!IsSetA) -->
<h1>Is Set B</h1>
<!-- /ko -->

JS:

function IsSetA(item) {
return item.category === 'A';
}

最佳答案

Array.prototype.filter() 要求您传递一个函数,它将在每个项目上执行。 IsSetA 本身有效,因为它是一个函数,但是用 ! 运算符否定它会将它转换为 bool 值,这根本不是 filter< 接受的东西.

或者,您可以创建辅助函数并在您的模板中使用它们:

function IsSetATruthy(item) {
return IsSetA(item);
}

function IsSetAFalsy(item) {
return !IsSetA(item);
}

或者像内联函数一样写:

<!-- ko foreach: Items.filter(function(item) { return IsSetA(item); }) -->
<h1>Is Set A</h1>
<!-- /ko -->

<!-- ko foreach: Items.filter(function(item) { return !IsSetA(item); }) -->
<h1>Is Set B</h1>
<!-- /ko -->

或者如果你的目标是supports,就使用箭头函数他们:

<!-- ko foreach: Items.filter(item => IsSetA(item)) -->
<h1>Is Set A</h1>
<!-- /ko -->

<!-- ko foreach: Items.filter(item => !IsSetA(item)) -->
<h1>Is Set B</h1>
<!-- /ko -->

关于javascript - 如何取反 Array.protype.filter 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44887962/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com