Нечетные числа из массива

Подскажите как вернуть нечетные числа из массива?

И еще, как возвращать отрицательные значения, а также, если это 0, возвращать пустой массив. Пример:

input: ([1, 2, 3, 4, 5, 6, 7, 7]) === [1, 3, 5, 7, 7];

input: ([0, 2, 4]) === [];

input: ([-10, 10, -11, 11, -12, 12]) === [-11, 11];

input: [] === [];

Написал:

function getNumbers(numbers) {

  let x = [];

  for (let i = 0; i < numbers.length; i++) {

    x = numbers[i];

    if (x % 2 == 1) {

      return [x];
    }
  }
}

Не понимаю где ошибся


Ответы (2 шт):

Автор решения: Igor

Не понимаю где ошибся

Везде.

function getNumbers(numbers) {
  let x = [];
  for (let i = 0; i < numbers.length; i++) {
    let n = numbers[i];
    if (n % 2)
      x.push(n);
  }
  return x;
}

console.log(JSON.stringify(getNumbers([1, 2, 3, 4, 5, 6, 7, 7])));
console.log(JSON.stringify(getNumbers([0, 2, 4])));
console.log(JSON.stringify(getNumbers([-10, 10, -11, 11, -12, 12])));
console.log(JSON.stringify(getNumbers([])));

→ Ссылка
Автор решения: Дядя Вова

const filter = arr => arr.filter(item => item % 2 !== 0)

console.log(filter([1, 2, 3, 4, 5, 6, 7, 7]))
console.log(filter([-10, 10, -11, 11, -12, 12]))
console.log(filter([0, 2, 4]))
console.log(filter([]))
console.log(filter([-1, 0, 1]))

Ещё можно так)

→ Ссылка