专栏名称: YoungZ
读 Vue 文档中
目录
相关文章推荐
前端大全  ·  确定裁员了,很严重,大家做好准备吧! ·  2 天前  
惠山市场监管  ·  惠小特讲安全之乘坐过山车 ·  昨天  
惠山市场监管  ·  惠小特讲安全之乘坐过山车 ·  昨天  
新幸福朝鲜  ·  残废少年踏上大地 ·  昨天  
新幸福朝鲜  ·  残废少年踏上大地 ·  昨天  
前端早读课  ·  【第3523期】程序员专属提示词工程实战手册 ·  昨天  
前端之巅  ·  为什么2025/05/28和2025-05- ... ·  3 天前  
51好读  ›  专栏  ›  YoungZ

[译]非常有用的 48 个 JavaScript 代码片段,值得收藏!

YoungZ  · 掘金  · 前端  · 2018-02-06 02:39

正文

请到「今天看啥」查看全文


const curry = (fn, arity = fn.length, ...args) =>

  arity <= args.length

    ? fn(...args)

    : curry.bind(null, fn, arity, ...args);

// curry(Math.pow)(2)(10) -> 1024

// curry(Math.min, 3)(10)(50)(2) -> 2

Deep flatten array

使用递归,使用reduce()来获取所有不是数组的元素,flatten每个元素都是数组。

const deepFlatten = arr =>

  arr.reduce((a, v) => a.concat(Array.isArray(v) ? deepFlatten(v) : v), []);

// deepFlatten([1,[2],[[3],4],5]) -> [1,2,3,4,5]

数组之间的区别

从b创建一个Set,然后在a上使用Array.filter(),只保留b中不包含的值。

const difference = (a, b) => { const s = new Set(b); return a.filter(x => !s.has(x)); };

// difference([1,2,3], [1,2]) -> [3]

两点之间的距离

使用Math.hypot()计算两点之间的欧几里德距离。

const distance = (x0, y0, x1, y1) => Math.hypot(x1 - x0, y1 - y0);

// distance(1,1, 2,3) -> 2.23606797749979

可以按数字整除

使用模运算符(%)来检查余数是否等于0。

const isDivisible = (dividend, divisor) => dividend % divisor === 0;

// isDivisible(6,3) -> true

转义正则表达式

使用replace()来转义特殊字符。

const escapeRegExp = str => str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');

// escapeRegExp('(test)') -> \\(test\\)

偶数或奇数

使用Math.abs()将逻辑扩展为负数,使用模(%)运算符进行检查。 如果数字是偶数,则返回true;如果数字是奇数,则返回false。

const isEven = num => num % 2 === 0;

// isEven(3) -> false

阶乘

使用递归。如果n小于或等于1,则返回1。否则返回n和n – 1的阶乘的乘积。

const factorial = n => n <= 1 ? 1 : n * factorial(n - 1);

// factorial(6) -> 720 

斐波那契数组生成器

创建一个特定长度的空数组,初始化前两个值(0和1)。使用Array.reduce()向数组中添加值,后面的一个数等于前面两个数相加之和(前两个除外)。

const fibonacci = n =>

  Array(n).fill(0).reduce((acc, val, i) => acc.concat(i > 1 ? acc[i - 1] + acc[i - 2] : i), []);

// fibonacci(5) -> [0,1,1,2,3]

过滤数组中的非唯一值

将Array.filter()用于仅包含唯一值的数组。

const filterNonUnique = arr => arr.filter(i => arr.indexOf(i) === arr.lastIndexOf(i));

// filterNonUnique([1,2,2,3,4,4,5]) -> [1,3,5]

Flatten数组

使用reduce()来获取数组中的所有元素,并使用concat()来使它们flatten。

const flatten = arr => arr.reduce((a, v) => a.concat(v), []);

// flatten([1,[2],3,4]) -> [1,2,3,4]

从数组中获取最大值

使用Math.max()与spread运算符(…)结合得到数组中的最大值。







请到「今天看啥」查看全文


推荐文章
惠山市场监管  ·  惠小特讲安全之乘坐过山车
昨天
惠山市场监管  ·  惠小特讲安全之乘坐过山车
昨天
新幸福朝鲜  ·  残废少年踏上大地
昨天
新幸福朝鲜  ·  残废少年踏上大地
昨天
金乡大蒜辣椒国际交易市场  ·  地球上,我只服印度人!不信你看~~
8 年前
看懂龙头股  ·  【打赌直播】鬼知道,我今天做了什么
8 年前