从过滤器函数内的 for 循环中获取奇怪的结果

Getting odd results from a for loop inside a filter function

我在过滤器中循环。我想从我的 vals 数组中获取值加上我的过滤器的键(名称,描述)。

当我遍历 vals 数组时,我不断 returned name 而不是密钥。

理想情况下,我希望 return 方法给我键和值。

return x[this.searchValues[i]].includes('phil')

成为 return x.name.includes('phil') return x.decription.includes('phil')

  const vals = ['name', 'decription']

  const arr =[{
    name: 'joe',
    decription: 'is a guy who likes beer'
   },
   name: 'phil',
    decription: 'is a super hero'
   }]

  this.result = arr.filter((x) => {
    for(let i = 0; i< vals.length; i++){
       return x[this.searchValues[i]].includes('phil');
    }
  })

不确定你要达到什么目的,你需要在问题中清楚地说明你的目标是什么。

但如果目标是从 arr 中获取名称为 'phil' 的对象,则可以这样完成:

this.result = arr.filter(x => x.name === 'phil')

如果您需要获取任何 属性 等于 'phil' 的对象,那么:

this.result = arr.filter(x => Object.keys(x).every(k => k === 'phil'))

const vals = ['name', 'decription']

const arr =[{
  name: 'joe',
  decription: 'is a guy who likes beer'
 },{
 name: 'phil',
  decription: 'is a super hero'
 }]

 let result = arr.filter(e => vals.some(n => e[n].includes('phil')))
 
 console.log(result)