繁体   English   中英

如何根据变量过滤 typescript 数组

[英]How to filter typescript array based on a variable

我正在尝试过滤 TypeScript 中的数组,但使用变量而不是硬编码数字。 Stack Overflow 上的大多数结果都讨论了使用 arrays 过滤 arrays,但没有讨论使用单个变量。

我有一个这种类型的对象数组:

class pair {
    name: string,
    value: number
}

我想创建一个 function 根据一个值过滤掉其中的一些。

myFunction(removeMe: string) {
    ...
    var resultingArray = arrayOfPairObjects.filter(x => x.value === Number(removeMe)); // the cast is necessary, sadly
    return resultingArray;
}

但是如果我这样做, removeMe设置正确,但是当过滤器运行时它的值变得未定义 我不知道为什么,但如果我将Number(removeMe)更改为2 ,它会完美运行。 我只需要知道如何使变量起作用。

谢谢!

编辑:通过变得未定义,我的意思是我可以在控制台上的 removeMe 值记录在 .filter() 之前的行上,并且它的值是正确的(是“1”或“2”,无论传入什么),但是我在控制台中收到一条错误消息,指出.filter() 中的值未定义。 我认为它可能会丢失 scope 但我对 Typescript 有点陌生,所以也许有一个我不知道的微妙之处。

arrayOfPairObjects: Pair[] = [
  { name: 'hello', value: 2 },
  { name: 'hello', value: 5 },
  { name: 'hello', value: 7 },
  { name: 'hello', value: 8 },
  { name: 'hello', value: 9 },
  { name: 'hello', value: 10 }
]

// removeMe is a little bit confusing, but okay..
getFilteredArray(removeMe: string) {
   return this.arrayOfPairObjects.filter(x => x.value === +removeMe); 
}

console.log(this.getFilteredArray('7'));

// Output:  
// { name: 'hello', value: 7 }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM