Js进阶8-案例:手写常见原生方法

一、map 方法

手写 map 方法

function map(arr, callback) {
  if (!Array.isArray(arr) || !arr.length || typeof callback !== 'function') { // arr不是数组,长度非0,callback是 function
    return [];
  } else {
    let result = [];
    for (let index = 0; index < arr.length; index ++) {
      const item = arr[i], self = arr;
      result.push(callback(item, index, self));
    }
    return result;
  }
}

使用 map 方法:

const arr = [10, 20, 30];
const res = map(arr, (item) => item * 2);
console.log(res); // [20, 40, 60]

二、reduce 方法

手写 reduce 方法

function reduce(arr, callback, initialValue) {
  if (!Array.isArray(arr) || !arr.length || typeof callback !== 'function') {
    return [];
  } else {
    // 判断是否有初始值
    let hasInitialValue = initialValue !== undefined;
    let pre= hasInitialValue ? initialValue : arr[0];
    for (let index = hasInitialValue ? 0 : 1; index < arr.length; index++) {
      const item = arr[index], self = arr;
      pre = callback(pre, item, index, self);
    }
    const res = pre;
    return res;
  }
}

使用 reduce 方法:

const arr = [1, 2, 3, 4, 5];
const res = reduce(arr, (pre, item) => pre + item, 10);
console.log(res); // 25

你可能感兴趣的:(Js进阶,javascript,前端)