>  기사  >  웹 프론트엔드  >  Javascript의 Map, Filter 및 Reduce 메서드에 대한 폴리필

Javascript의 Map, Filter 및 Reduce 메서드에 대한 폴리필

王林
王林원래의
2024-08-16 06:18:12613검색

Polyfill for Map, Filter, and Reduce Methods in Javascript

지도

각 배열 항목에 대해 몇 가지 작업(콜백 함수)을 수행하여 원래 배열에서 새 배열을 반환합니다. 원래 배열은 변경되지 않습니다.

const nums = [1, 2, 3, 4];

const double = nums.map((num, i, arr) => num * 2);
console.log(double); // [2, 4, 6, 8]

구현

Array.prototype.myMap = function (cb) {
  let output = [];
  for (let i = 0; i < this.length; ++i) {
    output.push(cb(this[i], i, this));
  }
  return output;
};

필터

주어진 조건을 만족하는 요소(즉, 콜백이 true를 반환하는 요소)만 포함하는 새 배열을 반환합니다. 원래 배열은 변경되지 않습니다.

const nums= [1, 2, 3, 4];

const greaterThan2 = nums.filter((num, i, arr) => num > 2);
console.log(greaterThan2); // [3, 4]

구현

Array.prototype.myFilter = function (cb) {
  let output = [];
  for (let i = 0; i < this.length; ++i) {
    if (cb(this[i], i, this)) output.push(this[i]);
  }
  return output;
};

줄이다

아마도 세 가지 중 가장 복잡할 것입니다. 이 방법은 배열의 요소를 처리하여 단일 출력 값을 생성합니다.

const nums = [1, 2, 3, 4];

const sum = nums.reduce((acc, num) => acc + num, 0);

console.log(sum); // 10

구현

Array.prototype.myReduce = function (cb, initialValue) {
  let accumulator = initialValue;
  for (let i = 0; i < this.length; ++i) {
    accumulator = accumulator!== undefined ? cb(accumulator, this[i], i, this) : this[i];
  }
  return accumulator;
};

위 내용은 Javascript의 Map, Filter 및 Reduce 메서드에 대한 폴리필의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.