【问题标题】:How to check two conditions in filter?如何检查过滤器中的两个条件?
【发布时间】:2021-04-17 12:11:33
【问题描述】:

我有一个数组,

const array = [
{
   name: G1,
   male: true,
   female: false
},
{
   name: G2,
   male: false,
   female: true
}]

现在,我需要过滤或获取 name=G1,然后我需要检查男性是真的还是女性是真的?输出为男性还是女性?

我试过了;

array.filter(e => e.name === "G1" && (e.malesSeat === true || e.ladiesSeat === true))

这给出了结果,但如何知道哪个是男性或女性?

预期结果:

Male === true or just Male

至于G1,只有Male才是真的!

【问题讨论】:

  • 只想要一个对象作为结果?请添加想要的结果。顺便说一句,您的属性是布尔值而不是字符串。
  • 现在检查@NinaScholz

标签: javascript arrays


【解决方案1】:

您使用的是===,这意味着两个操作数应该是相同的类型。但是 femalemale 键具有布尔值。所以我们应该在条件中有布尔值:

array.filter(e => e.name === "G1" && (e.male === true || e.female === true))

或者直接使用==

array.filter(e => e.name === "G1" && (e.male == 'true' || e.female == 'true'))

更新:

由于您只是想过滤并确定其 male 是否为 female,那么我们可以使用 filtermap 方法:

let result = array.filter(e => e.name === "G1")
    .map(s=> s.male ? 'Male' : 'Female');

一个例子:

const array = [
    {
       name: 'G1',
       male: true,
       female: false
    },
    {
       name: 'G2',
       male: false,
       female: true
    }]

    
let result = array.filter(e => e.name === "G1")
.map(s=> s.male ? 'Male' : 'Female');
console.log(result)

【讨论】:

  • @Jenifer_009 请看我更新的答案
  • 我不需要完整的对象,只需要它的男性,然后男性作为输出,或者如果它的女性,然后女性作为输出!
  • @Jenifer_009 请看我更新的答案
【解决方案2】:

检查代码。只需使用男性或女性。

const array = [
{
   name: 'G1',
   male: true,
   female: false
},
{
   name: 'G2',
   male: false,
   female: true
}]

const arr = array.filter(e => e.name === "G1" && (e.male || e.female))
   console.log(arr.length >= 1 ? (arr[0].male ? 'Male' : 'Female') : 'Not found')

【讨论】:

  • 我不需要完整的对象,只需要它的男性,然后男性作为输出,或者如果它的女性,然后女性作为输出!
【解决方案3】:

您可以使用conditional (ternary) operator ?: 并检查属性。

这种方法采用 Array#find 的条件,该条件仅直接采用 boolena 属性,而无需检查 truefalse

const
    array = [{ name: 'G1', male: true, female: false }, { name: 'G2', male: false, female: true }],
    item = array.find(e => e.name === "G1" && (e.male || e.female)) || {};

console.log(item.male ? 'Male' : item.female ? 'Female' : 'X');

【讨论】:

  • 当数组中只有一个对象时,如何处理?它给出了未定义的!
  • 只需在find 后面添加|| {}。它接受一个默认对象,后面的检查返回一个'X'
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-31
  • 2018-04-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多