Как реализовать функцию, работающую с четностью элементов?

Реализуйте функцию getSameParity(), которая принимает на вход массив чисел и возвращает новый, состоящий из элементов, у которых такая же чётность, как и у первого элемента входного массива. Экспортируйте функцию по умолчанию.

getSameParity([]);        // []
getSameParity([1, 2, 3]); // [1, 3]
getSameParity([1, 2, 8]); // [1]
getSameParity([2, 2, 8]); // [2, 2, 8]

Подсказки
Проверка чётности - остаток от деления: item % 2 === 0 — чётное число. Если на вход функции передан пустой массив, то она должна вернуть пустой массив. Для работы с отрицательными числами может понадобиться функция нахождения модуля Math.abs

Мой код выдает такую ошибку:

expect(received).toEqual(expected) // deep equality

- Expected  - 4
+ Received  + 1

- Array [
-   1,
-   3,
- ]
+ Array []
function getSameParity(item) {
  const newItem = [];
  for (let i = 0; i < item.length; i += 1) {
    if (item[0] % 2 === 0) {
      newItem.push(item[i]);
    }
  }
  return newItem;
}
export default getSameParity

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

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

По заданию необходимо сравнивать с четностью первого элемента.

Для этого, надо сохранить эту четность до цикла

const m = items[0] % 2;

Далее в цикле сравнивать с этим значением

if (item[i] % 2 === m) { 
→ Ссылка
Автор решения: kirakka
const getSameParity = (list) => {
    const newList = [];
    let s = Math.abs(list[0] % 2);

    for(let i = 0; i < list.length; i += 1){
        if(Math.abs(list[i] % 2) === s){
            newList.push(list[i]);
        }
    }
    return newList
}

Попробуй что-то такое

→ Ссылка
Автор решения: chumaksa
const getSameParity = (array) => {
    if (array.length === 0) return array;
    const result = [];
    const isEven = Math.abs(array[0]) % 2 === 0;
    for (const element of array) {
        if (isEven && Math.abs(element) % 2 === 0) {
            result.push(element);
            continue;
        }
       if (!isEven && Math.abs(element) % 2 !== 0) {
            result.push(element);
        }
    }

    return result;
}

export default getSameParity;
→ Ссылка