Javascript 如何基于变量筛选typescript数组
我试图在TypeScript中过滤数组,但使用变量而不是硬编码的数字。关于堆栈溢出的大多数结果都涉及使用数组过滤数组,但没有一个涉及使用单个变量 我有一个这种类型的对象数组:Javascript 如何基于变量筛选typescript数组,javascript,arrays,angular,typescript,Javascript,Arrays,Angular,Typescript,我试图在TypeScript中过滤数组,但使用变量而不是硬编码的数字。关于堆栈溢出的大多数结果都涉及使用数组过滤数组,但没有一个涉及使用单个变量 我有一个这种类型的对象数组: class pair { name: string, value: number } 我想创建一个函数,根据一个值过滤掉其中的一些 myFunction(removeMe: string) { ... var resultingArray = arrayOfPairObjects.filt
class pair {
name: string,
value: number
}
我想创建一个函数,根据一个值过滤掉其中的一些
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()中的值未定义。我认为它可能正在失去作用,但我对打字脚本有点陌生,所以可能有一个微妙之处我不知道 “变得不明确”是什么意思?您在哪里看到未定义的值?作为字符串的
removeMe
看起来像什么?我们需要了解如何调用myFunction
。你能做一个stackblitz吗?也许用parseInt代替Number()@richytong removeMe包含一个数字,但由于其他一些限制,它的类型是String。例如,“1”对不起,removeMe是指我希望删除值为7的原始数组。可能会更改条件以检查!==不过,谢谢你。
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 }