每天学习几个node库 o(^▽^)┛
————————————————————

array-range github链接: https://github.com/mattdesl/array-range

这个库提供了生成固定范围数组的方法,原理是在for循环中在一个空数组中从开始项填入从指定数开始自增的int变量i,循环结束于范围结束参数值

代码如下:

mattdesllink
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
module.exports = function newArray(start, end) {
var n0 = typeof start === 'number',
n1 = typeof end === 'number'

if (n0 && !n1) {
end = start
start = 0
} else if (!n0 && !n1) {
start = 0
end = 0
}

start = start|0
end = end|0
var len = end-start
if (len<0)
throw new Error('array length must be positive')

var a = new Array(len)
for (var i=0, c=start; i<len; i++, c++)
a[i] = c
return a
}

arr-diff github链接: https://github.com/jonschlinkert/arr-diff

这个库提供了比较两个数组,提取不同点的方法

原理是遍历a数组,在每次遍历中遍历b数组,如果存在相同的,则遍历结束,如果不相同,则该项属于两个数组的不同项

代码如下:

jonschlinkertlink
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
/*!
* arr-diff <https://github.com/jonschlinkert/arr-diff>
*
* Copyright (c) 2014-2017, Jon Schlinkert.
* Released under the MIT License.
*/

'use strict';

module.exports = function diff(arr/*, arrays*/) {
var len = arguments.length;
var idx = 0;
while (++idx < len) {
arr = diffArray(arr, arguments[idx]);
}
return arr;
};

function diffArray(one, two) {
if (!Array.isArray(two)) {
return one.slice();
}

var tlen = two.length
var olen = one.length;
var idx = -1;
var arr = [];

while (++idx < olen) {
var ele = one[idx];

var hasEle = false;
for (var i = 0; i < tlen; i++) {
var val = two[i];

if (ele === val) {
hasEle = true;
break;
}
}

if (hasEle === false) {
arr.push(ele);
}
}
return arr;
}