![](/img/trans.png)
[英]How to filter an array of objects based on multiple properties in JavaScript/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.