筛选对象的槽式数组-预期不会返回新的数组结果

时间:2019-03-18 10:46:50

标签: javascript reactjs

问题出在对象的filter()槽数组中,我需要检查数组的当前index(object)是否具有值为isTransffered: false的属性。

这是我使用过滤器功能的方式:

let filteredResults = allResults

// isTransferred --> coming from state and have value "false"
if (isTransferred && isTransferred !== 'all') {
  filteredResults = filteredResults.filter(
    res => res.isTransfer === isTransferred
  )
}

filteredResults是对象数组-这是数组的第一个索引:

0:
 accountNumber: "8787986"
 isTransfer: true
 jurisdiction: "AK"
 lineOfBusiness: "wc"

我需要检查isTransfer是否为假。

谢谢。

2 个答案:

答案 0 :(得分:0)

问题在于您的情况是否

if (isTransferred && isTransferred !== 'all') {
  // this will not be executed if isTransferred is false
  filteredResults = filteredResults.filter(
    res => res.isTransfer === isTransferred
  )
}

简单地写为

if (isTransferred !== 'all') {
  filteredResults = filteredResults.filter(
    res => res.isTransfer === isTransferred
  )
}

答案 1 :(得分:0)

如果在filteredResults内需要拥有具有属性isTransfer === false的所有对象,那么filter()回调中就会出现问题。

如果输入IF语句,则isTransferred等于true。不过,在filter()回调中,您编写了:res => res.isTransfer === isTransferred,这在普通语言中是”“接受属性isTransfer等于isTransferred的条目”
但是,由于我们位于IF中,因此isTransferred等于true!因此,您只是采用具有isTrasnfer属性等于true的条目。

解决方案:您应该写res => res.isTransfer !== isTransferred,我们更简单的res => res.isTransfer === false