Фильтрация элемента списка, начинающегося с буквы в JavaScript

Я пытаюсь отсортировать элементы списка, начинающиеся с "N" в новый список. Почему это не будет работать?

const countries = ['Norway', 'Sweden',  'Denmark', 'New Zealand'];

function firstN(){
  for (let i=0;i<countries.length;i++){
    countries[i].startsWith("N")
    }
}

let startsWithN = countries.filter(firstN())

Ответы

Ответ 1

Это примерно то же самое, что и ответ @adeneo, немного немного:

const countries = ['Norway', 'Sweden',  'Denmark', 'New Zealand'];

const startsWithN = countries.filter((country) => country.startsWith("N"));

console.log(startsWithN);

// Output: [ 'Norway', 'New Zealand' ]

Ответ 2

Вы фильтруете на основе условия, именованная функция возвращает true или false на основе этого условия

const countries = ['Norway', 'Sweden', 'Denmark', 'New Zealand'];

function firstN(item) {
  return item.toLowerCase().indexOf('n') === 0;
}

let startsWithN = countries.filter(firstN);

console.log(startsWithN)

Ответ 3

Очень просто:

const countries = ['Norway', 'Sweden',  'Denmark', 'New Zealand'];

let startsWithN = countries.filter(function (country) {
  return country[0].toLowerCase() === 'n';
});

console.log(startsWithN)

Ответ 4

countries.filter(s => s.toLowerCase().indexOf("n") == 0)

Ответ 5

Если ожидаемым результатом является новый массив, содержащий только элементы countries, начинающиеся с "N", вы можете настроить существующий javascript для создания массива внутри firstN, передать входной массив в firstN, .push(), которые передают if условие в цикле for в новый массив, return новый массив

const countries = ['Norway', 'Sweden', 'Denmark', 'New Zealand'];

function firstN(arr, letter) {
  for (let i = 0, res = []; i < arr.length; i++) {
    if (arr[i].startsWith(letter)) res.push(arr[i])
  }
  return res
}

let startsWithN = firstN(countries, "N");

console.log(startsWithN);

Ответ 6

Тем не менее:

const countries = ['Norway', 'Sweden',  'Denmark', 'New Zealand'];

const startsWithN = countries.filter(/./.test.bind(/^N/));

console.log(startsWithN);