Как отфильтровать массив машинописного текста на основе переменной - PullRequest
0 голосов
/ 29 мая 2020

Я пытаюсь фильтровать массив в TypeScript, но использую переменную вместо жестко заданного числа. Большинство результатов на Stack Overflow говорят о фильтрации массивов с помощью массивов, но ни в одном из них не говорится об использовании одной переменной.

У меня есть массив объектов этого типа:

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, он будет работать отлично. Мне просто нужно знать, как заставить переменную работать.

Спасибо!

РЕДАКТИРОВАТЬ: By становится неопределенным, я имею в виду, что я могу записать значение removeMe на консоли в строке непосредственно перед .filter () и его значение правильное (это «1» или «2», независимо от того, что передается), но я получаю сообщение об ошибке в консоли о том, что значение в .filter () не определено. Я думаю, что это, возможно, потеря объема, но я немного новичок в Typescript, поэтому, возможно, есть тонкость, о которой я не знаю.

1 Ответ

0 голосов
/ 29 мая 2020
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 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...