filter

не мутирующий (не меняет исходый массив)

ищет все элементы, на которых функция-колбэк вернет true

// .filter() — возвращает новый массив, элементы которого удовлетворяют условию в callback функции

// const unfiltered = [1, 'hello', 3, 'world', 5, 'elbrus', 7, 8, 'bootcamp', 10];
//
// console.log('======== FILTER STARTED ========');
//
// const filtered = unfiltered.filter((el, index, initialArray) => {
//   console.log({ el, index, initialArray });
//   return typeof el === 'number';
// });
//
// console.log('======== FILTER ENDED ========');
//
// console.log({ unfiltered, filtered });
let results = arr.filter(function (item, index, array) {
    // если true - элемент добавляется к результату, и перебор продолжается
    // возвращается пустой массив в случае, если ничего не найдено
}
let arr = [
    { name: 'Вася', age: 36 },
    { name: 'Коля', age: 18 },
    { name: 'Оля', age: 'не скажу' },
]

let result = arr.filter(function (item, index, array) {
    return item.age >= 18;
});
console.log(result);    // новый массив из двух элементов {name Вася..., Коля}
let newArr = arr.filter((el) => el > 10);
// только четные значения массива
let numbers = [1, 4, 7, 2, 9, 10, 3, 6];
const evenNumbers = numbers.filter((el) => el % 2 === 0)
// Как работает

function condition (el) {
  return el > 10
}

let newArr = arr4.filter(condition)
function myFilter(array, valerii) {
  let res = [];
  for (let i = 0; i < array.length; i++) {
    if (valerii(array[i])) {
      res.push(array[i]);
    }
  }
  return res;
}
let newArr2 = myFilter(arr4, (el) => el > 10);
console.log(newArr2);

Last updated