【问题标题】:How to add check in array based on some conditions around a particular element?如何根据特定元素周围的某些条件添加签入数组?
【发布时间】:2021-04-07 23:03:30
【问题描述】:

我有一个名为 var_name 的数组

如果存在未检测到的元素,如何检入数组

但如果我的数组不包含检测到

并且包含不同的元素,它不应该做任何事情。例如:

  1. var_name = [detected, nondetected] 它应该执行 <div> Do something </div>
  2. var_name = [nondetected, inprogress] 它应该执行 <div> Do nothing </div>
  3. var_name = [detected, detected] 它应该执行 <div> Do nothing </div>

到目前为止尝试过的事情:

!var_name.includes('detected') ? (<div>Do something</div>) : (<div>Do nothing</div>) 

但我的用例失败了

因此,为了做某事,最多需要 1 个检测到的实例,然后是其他元素(如未检测到等)。如果它包含所有检测到的,那么它仍然不做任何事情。如何执行?

【问题讨论】:

  • 基于您拥有的 3 个案例,如何执行一个 for 循环来计算检测到的数量?或使用过滤器并获取过滤后数组的长度? if === 1 然后做某事,否则什么都不做
  • 我该怎么做?有没有办法在返回函数中使用 if-else?
  • 第一次遍历数组并将其减少到“检测到”的计数,然后正常循环以映射到 JSX 并呈现您需要的内容。

标签: javascript arrays reactjs filter


【解决方案1】:

您可能想要完善“匹配”功能,我只是使用 === 'detected' 以便更容易理解......但这应该可以帮助您入门:

const var_name = ['detected', 'detected'];
console.log(var_name.filter((item) => item === 'detected').length);

所以你可以这样做:

var_name.filter((item) => item === 'detected').length === 1 ? do something : do nothing

【讨论】:

  • var_name.filter((item) =&gt; item === 'detected').length 是否计算“检测到”的实例数?
  • @SMahajan 是的.. 但正如我所说,您可能需要改进它
【解决方案2】:
const var_name = ["detected", "nondetected", "nondetected", "detected"];
(var_name.filter(x => x == "detected").length === 1) ? console.log("something") : console.log("nothing");

【讨论】:

    猜你喜欢
    • 2012-10-11
    • 1970-01-01
    • 2017-11-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-17
    • 2020-06-06
    • 2015-07-10
    • 2021-12-30
    相关资源
    最近更新 更多