Выбор элементов в массиве - Javascript - Использование метода фильтра - PullRequest
0 голосов
/ 25 апреля 2019

Сегодня кто-то задал вопрос о том, как рассчитать выбор определенных элементов в массиве от I до конца массива, и это заставило меня задуматься, как это сделать с помощью метода filter.

Одним из решений, которое кто-то дал, было использование slice, и я понимаю, что вы можете выбирать из индекса в индекс, но как бы вы реализовали метод filter, чтобы сделать то же самое?

Пример

let arr = ['bug', 'cat', 'dog', 'flea', 'bat', 'hat', 'rat'];

let newArr = arr.filter(element => element >= element.indexOf(3));
    
console.log(newArr);

Это то, что я придумал, это не работает, но идея состоит в том, чтобы выбрать все строки с индексом 3 или больше и вернуть их в другой массив.

Ответы [ 4 ]

4 голосов
/ 25 апреля 2019

Среда выполнения передает индекс в обратный вызов фильтра:

let newArr = arr.filter((element, index) => index >= 3);

С точки зрения производительности вы все еще создаете новый массив и копируете значения, поэтому он примерно такой же, как .slice().

2 голосов
/ 25 апреля 2019

Пока вы посещаете каждый предмет, вы можете использовать счетчик и уменьшать его, пока счетчик не достигнет нуля. Тогда возьмите это значение.

const
    fromIndex = i => _ => !i || !i--,
    array = ['bug', 'cat', 'dog', 'flea', 'bat', 'hat', 'rat'],
    result = array.filter(fromIndex(3));

console.log(result);
1 голос
/ 25 апреля 2019

вторым аргументом в обратном вызове фильтра является индекс.Таким образом, вы можете сделать что-то вроде этого

arr.filter ((element, index) => index> = 3);

1 голос
/ 25 апреля 2019

Вы должны создать функцию с критериями фильтра:

let arr = ['bug', 'cat', 'dog', 'flea', 'bat', 'hat', 'rat'];

function filterCriteria(item) {
  return item >= someValue;
}

function someFunction() {
  return arr.filter(filterCriteria);
}

"someFunction" вернет отфильтрованный массив

...