Как удалить элементы массива по условию?
Есть функция, которая возвращает массив чисел кратных 5:
const multiple = (n, maxNum) => {
let listOfYers = [];
for (let i = 0; i < maxNum; i++) {
if (i % n === 0) {
listOfYers.push(i);
}
}
return listOfYers;
};
let arrayYears = multiple(5, 1000);
По условию числа кратные 100 нужно удалить, кроме тех, которые кратные 500. То есть, 100, 200, 300, 400, 600, 700, 800, 900 нужно удалить с массива
Написал такую ф-ю:
const multipleOfHundred = arrayYears.filter((i) => {
if (i % 100 === 0 && !(i % 500 === 0)) {
console.log(i);
}
});
Условие работает правильно, осталось только удалить эти элементы с массива Как это можно сделать? Буду благодарен за помощь)
Ответы (3 шт):
Автор решения: John
→ Ссылка
Я правильно наверное понял
let nums = [100, 200, 300, 400, 500, 600, 700, 800, 900, 1000]
let findNumber = nums.filter(num => !(num % 500))
console.log(findNumber)
Автор решения: Sergey Glazirin
→ Ссылка
Первый вариант - фильтруем массив.
const multiple = (n, maxNum) => {
let listOfYers = [];
for (let i = 0; i < maxNum; i++) {
if (i % n === 0) {
listOfYers.push(i);
}
}
return listOfYers;
};
const arrayYears = multiple(5, 1000);
// записываем условие для фильтра в виде функции
const filterExpresion = (year) => !(year % 100 === 0 && !(year % 500 === 0));
// фильтруем
const filteredArray = arrayYears.filter(filterExpresion);
console.log(filteredArray);
Второй вариант - сразу же фильтруем массив в момент создания
const multiple = (n, maxNum) => {
let listOfYers = [];
for (let i = 0; i < maxNum; i++) {
// добавляем фильтр в момент создания массива
if (i % n === 0 && !(i % 100 === 0 && !(i % 500 === 0))) {
listOfYers.push(i);
}
}
return listOfYers;
};
const arrayYears = multiple(5, 1000);
console.log(arrayYears);
Автор решения: Igor Lebedev
→ Ссылка
Для краткости записи можно так, если планируется просто вычистить массив от лишнего (это пример, функцию "e" подставить свою):
let MyArray = [1,2,3,4,5]
MyArray = [].concat(MyArray.filter(e => e > 2))
console.log(MyArray)