xml地图|网站地图|网站标签 [设为首页] [加入收藏]

皇家88平台登录秒就可理解,代码片段

来源:http://www.ccidsi.com 作者:集成经验 人气:79 发布时间:2019-05-22
摘要:Anagrams of string(带有重复项) 该项目来自于 Github 用户 Chalarangelo,近期已在 Github 上获得了 5000多Star,精心收罗了多达 48 个有效的 JavaScript代码片段,该用户的代码能够让技士在 30秒以

Anagrams of string(带有重复项)

该项目来自于 Github 用户 Chalarangelo,近期已在 Github 上获得了 5000多Star,精心收罗了多达 48 个有效的 JavaScript 代码片段,该用户的代码能够让技士在 30 秒以至越来越少的时光内精通那一个时常采纳的底子算法,来探望那么些 JavaScript 代码都传达出了哪些呢!

原文:

选拔递归。对于给定字符串中的种种字母,为字母创制字谜。使用map()将字母与每部分字谜组合,然后使用reduce()将具有字谜组合到3个数组中,最焦点情状是字符串长度等于二或壹。

Anagrams of string(带有重复项)

作者:Chalarangelo

const anagrams = str => {

  if (str.length <= 2) return str.length === 2 ? [str, str[1] str[0]] : [str];

  return str.split('').reduce((acc, letter, i) =>

    acc.concat(anagrams(str.slice(0, i) str.slice(i 1)).map(val => letter val)), []);

};

// anagrams('abc') -> ['abc','acb','bac','bca','cab','cba']

动用递归。对于给定字符串中的种种字母,为字母创设字谜。使用map()将字母与每部分字谜组合,然后使用reduce()将具有字谜组合到3个数组中,最宗旨境况是字符串长度等于二或一。

译者:IT168  www.toutiao.com/i6498962961288135182

数组平平均数量

const anagrams = str => {

 

使用reduce()将种种值增添到累加器,初叶值为0,总和除以数老董度。

if (str.length <= 2) return str.length === 2 ? [str, str[1] str[0]] : [str];

该项目来自于 Github 用户 Chalarangelo,近来已在 Github 上收获了 四千多Star,精心搜罗了多达 4八 个有效的 JavaScript 代码片段,该用户的代码能够让技师在 30 秒以致越来越少的时间内精通这个常常利用的根基算法,来看看那一个 JavaScript 代码都传达出了何等吗!

const average = arr => arr.reduce((acc, val) => acc val, 0) / arr.length;

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

return str.split('').reduce((acc, letter, i) =>

 

大写每一种单词的首字母

acc.concat(anagrams(str.slice(0, i) str.slice(i 1)).map(val => letter val)), []);

皇家88平台登录 1

利用replace()相配每种单词的率先个字符,并选取toUpperCase()来将其大写。

};

Anagrams of string(带有重复项)

const capitalizeEveryWord = str => str.replace(/b[a-z]/g, char => char.toUpperCase());

// anagrams('abc') -> ['abc','acb','bac','bca','cab','cba']

 

// capitalizeEveryWord('hello world!') -> 'Hello World!'

数组平平均数量

接纳递归。对于给定字符串中的每一种字母,为字母创立字谜。使用map()将字母与每部分字谜组合,然后使用reduce()将装有字谜组合到1个数组中,最大旨情况是字符串长度等于二或一。

首字母大写

接纳reduce()将各类值增多到累加器,开首值为0,总和除以数经理度。

 

应用slice(0,1)和toUpperCase()大写第一个字母,slice(壹)获取字符串的别的部分。 省略lowerRest参数以保持字符串的其他部分不改变,或将其安装为true以转移为小写。(注意:那和上二个示范不是同1件事情)

const average = arr => arr.reduce((acc, val) => acc val, 0) / arr.length;

const anagrams = str => {

  if (str.length <= 2) return str.length === 2 ? [str, str[1] str[0]] : [str];

  return str.split('').reduce((acc, letter, i) =>

    acc.concat(anagrams(str.slice(0, i) str.slice(i 1)).map(val => letter val)), []);

};

// anagrams('abc') -> ['abc','acb','bac','bca','cab','cba']

const capitalize = (str, lowerRest = false) =>

  str.slice(0, 1).toUpperCase() (lowerRest ? str.slice(1).toLowerCase() : str.slice(1));

// capitalize('myName', true) -> 'Myname'

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

 

自己商议回文

大写每一种单词的首字母

数组平平均数量

将字符串调换为toLowerCase(),并应用replace()从中删除非字母的字符。然后,将其改换为tolowerCase(),将('')拆分为单独字符,reverse(),join(''),与原本的非反转字符串实行比较,然后将其转移为tolowerCase()。

使用replace()相配每个单词的首先个字符,并应用toUpperCase()来将其大写。

 

const palindrome = str => {

  const s = str.toLowerCase().replace(/[W_]/g,'');

  return s === s.split('').reverse().join('');

}

// palindrome('taco cat') -> true

const capitalizeEveryWord = str => str.replace(/b[a-z]/g, char => char.toUpperCase());

运用reduce()将每一个值增多到累加器,初步值为0,总和除以数老董度。

计数数组中值的产出次数

// capitalizeEveryWord('hello world!') -> 'Hello World!'

 

每回蒙受数组中的特定值时,使用reduce()来递增计数器。

首字母大写

const average = arr => arr.reduce((acc, val) => acc val, 0) / arr.length;

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

const countOccurrences = (arr, value) => arr.reduce((a, v) => v === value ? a 1 : a 0, 0);

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

应用slice(0,壹)和toUpperCase()大写第二个字母,slice(一)获取字符串的其他部分。 省略lowerRest参数以保证字符串的别的部分不改变,或将其安装为true以转变为小写。(注意:那和上贰个演示不是1致件事情)

 

当前URL

const capitalize = (str, lowerRest = false) =>

大写每种单词的首字母

利用window.location.href来赢稳当前ULX570L。

str.slice(0, 1).toUpperCase() (lowerRest ? str.slice(1).toLowerCase() : str.slice(1));

 

const currentUrl = _ => window.location.href;

// currentUrl() -> ''

// capitalize('myName', true) -> 'Myname'

行使replace()相称各样单词的第二个字符,并动用toUpperCase()来将其大写。

Curry

自己谈论回文

 

选拔递归。假诺提供的参数(args)数量丰裕,则调用传递函数f,不然再次回到二个curried函数f。

将字符串调换为toLowerCase(),并利用replace()从中删除非字母的字符。然后,将其转移为tolowerCase(),将('')拆分为单独字符,reverse(),join(''),与原本的非反转字符串进行相比,然后将其转移为tolowerCase()。

const capitalizeEveryWord = str => str.replace(/[a-z]/g, char => char.toUpperCase());

// capitalizeEveryWord('hello world!') -> 'Hello World!'

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

const palindrome = str => {

 

Deep flatten array

const s = str.toLowerCase().replace(/[W_]/g,'');

首字母大写

利用递归,使用reduce()来获得具备不是数组的成分,flatten每种成分都以数组。

return s === s.split('').reverse().join('');

 

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]

}

使用slice(0,一)和toUpperCase()大写第一个假名,slice(1)获取字符串的别的部分。 省略lowerRest参数以保全字符串的别的部分不改变,或将其设置为true以转移为小写。(注意:那和上三个示范不是千篇1律件工作)

数组之间的区分

// palindrome('taco cat') -> true

 

从b创造2个Set,然后在a上利用Array.filter(),只保留b中不包括的值。

计数数组中值的产出次数

const capitalize = (str, lowerRest = false) =>

  str.slice(0, 1).toUpperCase() (lowerRest ? str.slice(1).toLowerCase() : str.slice(1));

// capitalize('myName', true) -> 'Myname'

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

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

每一趟蒙受数组中的特定值时,使用reduce()来递增计数器。

 

两点时期的相距

const countOccurrences = (arr, value) => arr.reduce((a, v) => v === value ? a 1 : a 0, 0);

自己批评回文

使用Math.hypot()计算两点期间的欧几Reade距离。

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

 

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

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

当前URL

将字符串转变为toLowerCase(),并行使replace()从中删除非字母的字符。然后,将其改变为tolowerCase(),将('')拆分为单身字符,reverse(),join(''),与原来的非反转字符串实行比较,然后将其转移为tolowerCase()。

能够按数字整除

动用window.location.href来获得当前UPAJEROL。

 

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

const currentUrl = _ => window.location.href;

const palindrome = str => {

  const s = str.toLowerCase().replace(/[W_]/g,'');

  return s === s.split('').reverse().join('');

}

// palindrome('taco cat') -> true

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

// isDivisible(6,3) -> true

// currentUrl() -> ''

 

转义正则表明式

Curry

计数数组中值的出现次数

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

应用递归。假若提供的参数(args)数量丰富,则调用传递函数f,不然重返贰个curried函数f。

 

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

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

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

每趟遭遇数组中的特定值时,使用reduce()来递增计数器。

偶数或奇数

arity <= args.length

 

选取Math.abs()将逻辑扩充为负数,使用模(%)运算符进行检讨。 假诺数字是偶数,则赶回true;若是数字是奇数,则赶回false。

? fn(...args)

const countOccurrences = (arr, value) => arr.reduce((a, v) => v === value ? a 1 : a 0, 0);

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

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

// isEven(3) -> false

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

 

阶乘

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

当前URL

应用递归。即使n小于或等于一,则赶回1。否则重返n和n - 壹的阶乘的乘积。

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

 

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

// factorial(6) -> 720

Deep flatten array

运用window.location.href来赢伏贴前U中华VL。

斐波那契数组生成器

应用递归,使用reduce()来获得具有不是数组的因素,flatten种种成分都以数组。

 

始建一个一定长度的空数组,开首化前多少个值(0和1)。使用Array.reduce()向数组中加多值,前面的一个数等于前边多少个数相加之和(前八个除此之外)。

const deepFlatten = arr =>

const currentUrl = _ => window.location.href;

// currentUrl() -> ''

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]

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

 

过滤数组中的非唯一值

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

Curry

将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]

从b创建1个Set,然后在a上选取Array.filter(),只保留b中不包涵的值。

采纳递归。借使提供的参数(args)数量丰硕,则调用传递函数f,不然重临三个curried函数f。

Flatten数组

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

 

接纳reduce()来取得数组中的全数因素,并行使concat()来使它们flatten。

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

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

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

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

两点之间的偏离

 

从数组中收获最大值

选择Math.hypot()计算两点期间的欧几Reade距离。

Deep flatten array

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

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

 

const arrayMax = arr => Math.max(...arr);

// arrayMax([10, 1, 5]) -> 10

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

利用递归,使用reduce()来获得具有不是数组的成分,flatten每一个成分都以数组。

从数组中获取最小值

能够按数字整除

 

利用Math.min()与spread运算符(...)结合获得数组中的最小值。

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

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]

const arrayMin = arr => Math.min(...arr);

// arrayMin([10, 1, 5]) -> 1

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

 

收获滚动地方

// isDivisible(6,3) -> true

数组之间的区别

只要已定义,请使用pageXOffset和pageYOffset,不然使用scrollLeft和scrollTop,能够省略el来利用window的私下认可值。

转义正则表达式

 

const getScrollPos = (el = window) =>

  ({x: (el.pageXOffset !== undefined) ? el.pageXOffset : el.scrollLeft,

    y: (el.pageYOffset !== undefined) ? el.pageYOffset : el.scrollTop});

// getScrollPos() -> {x: 0, y: 200}

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

从b成立1个Set,然后在a上行使Array.filter(),只保留b中不带有的值。

最大公约数(GCD)

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

 

应用递归。基本情状是当y等于0时。在这种处境下,重临x。不然,重返y的GCD和x / y的其他部分。

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

 

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

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

const gcd = (x, y) => !y ? x : gcd(y, x % y);

// gcd (8, 36) -> 4

偶数或奇数

 

Head of list

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

两点之间的距离

返回ARR[0]

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

 

const head = arr => arr[0];

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

// isEven(3) -> false

采纳Math.hypot()计算两点时期的欧几Reade距离。

list初始化

阶乘

 

返回arr.slice(0,-1)

利用递归。借使n小于或等于1,则赶回壹。不然重返n和n - 一的阶乘的乘积。

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

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

const initial = arr => arr.slice(0, -1);

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

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

 

用range初步化数组

// factorial(6) -> 720

能够按数字整除

利用Array(end-start)创制所需长度的数组,使用map()来填充范围中的所需值,能够省略start使用暗中同意值0。

斐波那契数组生成器

 

const initializeArrayRange = (end, start = 0) =>

  Array.apply(null, Array(end - start)).map((v, i) => i start);

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

开创三个特定长度的空数组,起初化前七个值(0和1)。使用Array.reduce()向数组中增添值,后边的多个数等于后边五个数相加之和(前几个除了这一个之外)。

选择模运算符(%)来检查余数是不是等于0。

用值初始化数组

const fibonacci = n =>

 

运用Array(n)创立所需长度的数组,fill(v)以填充所需的值,能够忽略value使用暗许值0。

Array(n).fill(0).reduce((acc, val, i) => acc.concat(i > 1 ? acc[i

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

// isDivisible(6,3) -> true

 

  • 1] acc[i - 2] : i), []);

 

const initializeArray = (n, value = 0) => Array(n).fill(value);

// initializeArray(5, 2) -> [2,2,2,2,2]

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

转义正则表明式

列表的结尾

过滤数组中的非唯1值

 

返回arr.slice(-1)[0]

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

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

const last = arr => arr.slice(-1)[0];

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

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

 

测试成效所费用的时光

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

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

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

行使performance.now()获取函数的初步和截至时间,console.log()所消费的岁月。第2个参数是函数名,随后的参数字传送递给函数。

Flatten数组

 

const timeTaken = callback => {

  console.time('timeTaken');

  const r = callback();

  console.timeEnd('timeTaken');

  return r;

};

// timeTaken(() => Math.pow(2, 10)) -> 1024

// (logged): timeTaken: 0.02099609375ms

采用reduce()来收获数组中的全部因素,并运用concat()来使它们flatten。

偶数或奇数

根源键值对的目的

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

 

利用Array.reduce()来创制和组合键值对。

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

行使Math.abs()将逻辑扩充为负数,使用模(%)运算符实行反省。 要是数字是偶数,则赶回true;要是数字是奇数,则赶回false。

const objectFromPairs = arr => arr.reduce((a, v) => (a[v[0]] = v[1], a), {});

// objectFromPairs([['a',1],['b',2]]) -> {a: 1, b: 2}

从数组中取得最大值

 

管道

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

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

// isEven(3) -> false

使用Array.reduce()通过函数字传送递值。

const arrayMax = arr => Math.max(...arr);

 

const pipe = (...funcs) => arg => funcs.reduce((acc, func) => func(acc), arg);

// pipe(btoa, x => x.toUpperCase())("Test") -> "VGVZDA=="

Powerset

// arrayMax([10, 1, 5]) -> 10

阶乘

采取reduce()与map()结合来遍历成分,并将其组合成包蕴全体结成的数组。

从数组中拿走最小值

 

const powerset = arr =>

  arr.reduce((a, v) => a.concat(a.map(r => [v].concat(r))), [[]]);

// powerset([1,2]) -> [[], [1], [2], [2,1]]

应用Math.min()与spread运算符(...)结合获得数组中的最小值。

运用递归。假若n小于或等于一,则赶回一。不然再次来到n和n - 壹的阶乘的乘积。

 

const arrayMin = arr => Math.min(...arr);

 

限制内的专断整数

// arrayMin([10, 1, 5]) -> 1

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

// factorial(6) -> 720

 

得到滚动地点

 

运用Math.random()生成三个私自数并将其映射到所需的范围,使用Math.floor()使其变为贰个平头。

假设已定义,请使用pageXOffset和pageYOffset,不然使用scrollLeft和scrollTop,能够省略el来接纳window的暗许值。

斐波这契数组生成器

const randomIntegerInRange = (min, max) => Math.floor(Math.random() * (max - min 1)) min;

const getScrollPos = (el = window) =>

 

// randomIntegerInRange(0, 5) -> 2

({x: (el.pageXOffset !== undefined) ? el.pageXOffset : el.scrollLeft,

创办1个一定长度的空数组,先导化前多个值(0和一)。使用Array.reduce()向数组中增加值,前面包车型地铁一个数等于前边多少个数相加之和(前多个除了这几个之外)。

本文由68399皇家赌场发布于集成经验,转载请注明出处:皇家88平台登录秒就可理解,代码片段

关键词: 68399皇家赌场 js 随笔

上一篇:如何远程连接SQL

下一篇:没有了

最火资讯