Skip to content

Instantly share code, notes, and snippets.

@hjkcai
Last active July 30, 2017 13:43
Show Gist options
  • Save hjkcai/20da2b2d42ac2c6c7450c002d1b95426 to your computer and use it in GitHub Desktop.
Save hjkcai/20da2b2d42ac2c6c7450c002d1b95426 to your computer and use it in GitHub Desktop.

1. 计算两个日期的天数差

函数模板

function daySpan (date1, date2) {
  // your code
}

函数参数

  • date1: Date 第一个日期
  • date2: Date 第二个日期

调用样例

daySpan(new Date(2016, 2, 7), new Date(2016, 4, 12))     // 66
daySpan(new Date(2016, 4, 12), new Date(2016, 2, 7))     // 66

2. 计算两个日期的天数差 - 高级版

函数模板

function daySpan (date1, date2) {
  // your code
}

函数参数

  • date1: String 第一个日期
  • date2: String 第二个日期

这两个日期字符串都会按照YYYY-MM-DD的格式输入,如2016-10-09

调用样例

daySpan('2016-02-07', '2016-04-12')     // 65
daySpan('2016-04-12', '2016-02-07')     // 65

3. 计算数组中元素重复次数

函数模板

function countRepeat (arr) {
  // your code
}

函数参数

  • arr: Array<Number> 仅包含数字的数组

调用样例

countRepeat([2, 9, 8, 4, 5, 3, 4, 8, 9, 9, 1, 0, 2, 1])
/* 顺序不影响结果
{
  '0': 1,
  '1': 2,
  '2': 2,
  '3': 1,
  '4': 2,
  '5': 1,
  '8': 2,
  '9': 3
} */

4. 驼峰转换函数

在代码的世界里,标识符中不能有空格, 但有时一个变量必须由两个或更多个单词来表达,如count repeatget own poperty descriptor等。 这时候就必须把他们写成第一个单词全小写,第二个以及后面的单词,除了首字母全小写的形式(即驼峰), 如countRepeatgetOwnPropertyDescriptor

下面你需要编写一个函数来实现这个功能

函数模板

function camelCase (str) {
  // your code
}

函数参数

  • str: String 要转换的字符串,可能的形式看下面的例子

调用样例

camelCase('hey guys')           // 'heyGuys'
camelCase('HELLO-world')        // 'helloWorld'
camelCase('oh  mY---gOd')       // 'ohMyGod'

5. 寻找字符串中第一个未重复的字符

寻找字符串中第一个未重复的字符,如果没有找到,则返回一个空字符串(''

函数模板

function firstNonRepeat (str) {
  // your code
}

函数参数

  • str: String 要寻找的字符串,可能是任何内容

调用样例

firstNonRepeat('aaabccc')     // 'b'
firstNonRepeat('aabccbd')     // 'd'
firstNonRepeat('aabxbcc')     // 'x'
firstNonRepeat('6666666')     // ''

6. 展平数组

数组中可以嵌套数组,要嵌套多少层都可以,比如[1, 2, [[3], 4]]。 这样看起来很不爽,所以我们要把它展开,只留下一层数组: [1, 2, 3, 4]

提示:判断xxx是否是数组的方法为 Array.isArray(xxx)

函数模板

function flatten (arr) {
  // your code
}

函数参数

  • arr: Array 包含嵌套数组的数组

调用样例

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

7. 去除数组中不重复的元素

只保留数组中有重复的元素,有重复几次就保留几个,具体看例子

函数模板

function nonUniqueElements (arr) {
  // your code
}

函数参数

  • arr: Array 包含嵌套数组的数组

调用样例

nonUniqueElements([1, 2, 3, 1, 3])         // [1, 3, 1, 3]
nonUniqueElements([1, 2, 3, 4, 5])         // []
nonUniqueElements([5, 5, 5, 5, 5])         // [5, 5, 5, 5, 5]
nonUniqueElements([10, 9, 10, 10, 9, 8])   // [10, 9, 10, 10, 9]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment