javascript 根据另一个数组中的值筛选数组

vawmfj5a  于 2023-06-20  发布在  Java
关注(0)|答案(2)|浏览(144)

我有下面的过滤器数组,其中包含以下三个值:

['serviceCode1', 'serviceCode2', 'serviceCode3']

我有一个包含大约78条记录的另一个数组,我试图根据上面列出的过滤器过滤它。

this.mainDataSet = this.mainDataSet.filter((data) => {
    return this.filters.forEach(x => data.serviceCode.includes(x.code!))
   });

然而,响应总是0,即使mainDataSet包括filters数组中列出的值,有人能解释一下我在这里做错了什么吗?

fcg9iug3

fcg9iug31#

forEach不返回值,它在原地对数组进行操作,所以你只是在过滤器数组上工作,而不是在数据集上,因为没有任何东西从你的内部函数返回。
我将使用includes方法将数据集与过滤器列表进行匹配。可读性更强。

const filters = [
  'serviceCode1', 
  'serviceCode2', 
  'serviceCode3'
]

const filteredDataSet = 
  mainDataSet.filter((data) => filters.includes(data.serviceCode));
fhity93d

fhity93d2#

Array.forEach()用于迭代元素,但它不会返回任何值。
您应该使用Array.find(),以便根据另一个数组过滤数组中的元素。

this.mainDataSet = this.mainDataSet.filter((data) => 
  this.filters.find(x => data.serviceCode.includes(x)));

相关问题