Как реализовать функцию, работающую с четностью элементов?
Реализуйте функцию 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 шт):
По заданию необходимо сравнивать с четностью первого элемента.
Для этого, надо сохранить эту четность до цикла
const m = items[0] % 2;
Далее в цикле сравнивать с этим значением
if (item[i] % 2 === m) {
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
}
Попробуй что-то такое
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;