美文网首页
js功能小算法

js功能小算法

作者: 送你一堆小心心 | 来源:发表于2018-09-28 15:02 被阅读0次

title: JS常用功能小算法

字符串

1.为字符串每一个字符中插入其他字符(举例子:每一个字符之间插入空格)

```
function test (str) {
    return str.split('').join(' ')
}
console.log(test('hello pig'))
```

控制台输出:h e l l o p i g

2.数组去重

  • es6方法

    function uni (arr) {
        return Array.from(new Set(arr))
    }
    var _arr = ['1', 22, 'aa', '1', 33, 33]
    console.log(uni(_arr))
    

    再简单一点

    const a = arr => [...new Set(arr)]
    console.log(a(['1', 22, 'aa', '1', 33, 33]))
    

    控制台输出:['1', 22, 'aa', 33]

  • es5方法

    var arr = [1, 3, 4, 4, 2, 3, 1]
    var arr1 = []
    for (var i = 0; i < arr.length; i++) {
        if (arr1.indexof(arr[i]) < 0) {
            arr1.push(arr[i])
        }
    }
    console.log(arr1)
    

    控制台输出[1, 3, 4, 2]

3.数组并集

```
u (a, b) {
    return Array.from(new Set([..a, ..b]))
}
console.log(u ([1,2,3,2,1], [3,2,1,5]))
```

控制台输出 [1,2,3,5]

4.数组交集

```
n (a, b) {
    return Array.from(new Set([...a].filter(x => new Set(b).has(x))))
}
console.log(u ([1,2,3,2,1], [3,2,1,5]))
```

控制台输出 [1,2,3]

5.数组差级

```
cha (a, b) {
    return [...a.filter(x => !new Set (b).has(x)), ...b.filter(x => !new Set (a).has(x))]
}
```

控制台输出 [5]

6.对应转换(举例数字月份转换成文字月份)

```
var mapTree = new Map([['01','一月'],['02','二月'],['03','三月'],['04','四月'],['05','五月'],['06','六月'],['07','七月'],['08','八月'],['09','九月'],['10','十月'],['11','十一月'],['12','十二月']])

console.log(mapTree.get('01'))
```

控制台输出 一月

7.检测一个变量是否为某一个类型(三种方式)

```
typeof(obj) === 'string'
typeof obj === 'string'
obj.constructor === 'string'
```

8.去掉字符串的空格

(1)正则+replace

const str = ' a a a f '
str = str.replace(/\s*/g, '')
console.log(str)

控制台输出:aaaf

(2)trim()

const str = ' a a a f '
console.log(str.trim())

控制台输出:a a a f(trim无法去掉中间的空格)

9.将某个字符串改写成驼峰形式(独立单词首字母大写)

```
let str = 'get-element-by-id'
let target = ''
let arr = str.split('-')
arr.forEach((item) => {
    target += item.substr(0, 1).toUpperCase() + item.substr(1)
})
console.log(target)
```

控制台输出:GetElementById

10.随机抽取n个10-100的数

```
getNum (n) {
    var arr = []
    for (let i = 0; i < n ; i ++) {
        arr.push(parseInt(Math.random() * 90 + 10))
    }
    return n
}
getNum(10)
```

控制台输出10个10-100之间的数字

找出数组中的最大差值

```
var arr = [1,3,13,234,234,11,334]
var minNum = arr[0]
var maxCha = 0
arr.forEach((item) => {
    minNum = Math.min(minNum, item)
    let cha = item - minNum
    maxCha = Math.max(maxCha, cha)
})
console.log(maxCha)
```

控制台输出: 333

计算一个整数的阶乘

```
add (n) {
    if (n == 1) {
        return 1
    } else {
        return n * add(n-1)
    }
}
console.log(add(5))
```

控制台输出 120

相关文章

网友评论

      本文标题:js功能小算法

      本文链接:https://www.haomeiwen.com/subject/dhrpoftx.html