日常生活的交流与学习

首页 新随笔 联系 管理

oop

img

fp

img

initialState从头到尾都没有变化

img

img

img

fp更喜欢递归代替循环

img

img

pure function

img

img

img

side effect

img

使用递归实现for循环

img

  1. 递归实现数组的累加
const arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

function sumArr(arr, i) {
  if (i === arr.length) return 0;
  return arr[i] + sumArr(arr, i + 1);
}

const sum = sumArr(arr, 0);
console.log("sum = " + sum);

  1. 更加简化的形式
const arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

function sumArr(arr, i) {
  return i === arr.length ? 0 : arr[i] + sumArr(arr, i + 1);
}
const sum = sumArr(arr, 0);
console.log("sum = " + sum);

img

声明式编程和命令式变量

img

不使用内置函数

img

  1. 再次升级
    img
const arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

// 乞丐版
function filterOdd(arr) {
  if (arr.length === 0) return [];
  if (arr[0] % 2 === 1) {
    return [arr[0], ...filterOdd(arr.slice(1))];
  }
  return filterOdd(arr.slice(1));
}

// 装x版
function filterOdd(arr) {
  return arr.length === 0
    ? []
    : arr[0] % 2 === 1
    ? [arr[0], ...filterOdd(arr.slice(1))]
    : filterOdd(arr.slice(1));
}

const res = filterOdd(arr);
console.log("res = ", res);

感谢

  1. 感谢油管上个一个台湾小哥哥的分享的视频,走歪的james,原视频可以去搜一下
posted on 2023-03-12 22:45  lazycookie  阅读(15)  评论(0编辑  收藏  举报