看了一些小的node模块,发现比较有意思,可以学习下别人的思路,于是决定整理下,持续更新!!
is-positive: Check if something is a positive number
'use strict';
module.exports = function (n) {
return toString.call(n) === '[object Number]' && n > 0;
};
// example
const isPositive = require('is-positive');
isPositive(1);
//=> true
isPositive(0);
//=> false
user-home: Get the path to the user home directory
'use strict';
module.exports = require('os-homedir')();
// example
var userHome = require('user-home');
console.log(userHome);
//=> '/Users/...'
negative-zero: Check if a number is negative zero
'use strict';
module.exports = x => Object.is(x, -0);
// example
const negativeZero = require('negative-zero');
negativeZero(-0);
//=> true
negativeZero(0);
//=> false
常规判断:
0 === -0 && 1 / -0 === -Infinity
// true
is-sorted: A small module to check if an Array is sorted.
function defaultComparator (a, b) {
return a - b
}
module.exports = function checksort (array, comparator) {
if (!Array.isArray(array)) throw new TypeError('Expected Array, got ' + (typeof array))
comparator = comparator || defaultComparator
for (var i = 1, length = array.length; i < length; ++i) {
if (comparator(array[i - 1], array[i]) > 0) return false
}
return true
}
// example
var sorted = require('is-sorted')
console.log(sorted([1, 2, 3]))
// => true
console.log(sorted([3, 1, 2]))
// => false
// supports custom comparators
console.log(sorted([3, 2, 1], function (a, b) { return b - a }))
// => true
is-number: Returns true if the value is a finite number.
'use strict';
module.exports = function(num) {
if (typeof num === 'number') {
return num - num === 0;
}
if (typeof num === 'string' && num.trim() !== '') {
return Number.isFinite ? Number.isFinite(+num) : isFinite(+num);
}
return false;
};
// example
const isNumber = require('is-number');
isNumber(5e3); // true
isNumber(0xff); // true
isNumber(-1.1); // true
isNumber(0); // true
isNumber(1); // true
isNumber(1.1); // true
isNumber(10); // true
isNumber(10.10); // true
isNumber(100); // true
isNumber('-1.1'); // true
isNumber('0'); // true
isNumber('012'); // true
isNumber('0xff'); // true
isNumber('1'); // true
isNumber('1.1'); // true
isNumber('10'); // true
isNumber('10.10'); // true
isNumber('100'); // true
isNumber('5e3'); // true
isNumber(parseInt('012')); // true
isNumber(parseFloat('012')); // true
isNumber(Infinity); // false
isNumber(NaN); // false
isNumber(null); // false
isNumber(undefined); // false
isNumber(''); // false
isNumber(' '); // false
isNumber('foo'); // false
isNumber([1]); // false
isNumber([]); // false
isNumber(function () {}); // false
isNumber({}); // false
array-slice: Slices array from the start index up to, but not including, the end index.
'use strict';
module.exports = function slice(arr, start, end) {
var len = arr.length;
var range = [];
start = idx(len, start);
end = idx(len, end, len);
while (start < end) {
range.push(arr[start++]);
}
return range;
};
function idx(len, pos, end) {
if (pos == null) {
pos = end || 0;
} else if (pos < 0) {
pos = Math.max(len + pos, 0);
} else {
pos = Math.min(pos, len);
}
return pos;
}
// example
var slice = require('array-slice');
var arr = ['a', 'b', 'd', 'e', 'f', 'g', 'h', 'i', 'j'];
slice(arr, 3, 6);
//=> ['e', 'f', 'g']
array-first: Get the first element or first n elements of an array.
'use strict';
var isNumber = require('is-number');
var slice = require('array-slice');
module.exports = function arrayFirst(arr, num) {
if (!Array.isArray(arr)) {
throw new Error('array-first expects an array as the first argument.');
}
if (arr.length === 0) {
return null;
}
var first = slice(arr, 0, isNumber(num) ? +num : 1);
if (+num === 1 || num == null) {
return first[0];
}
return first;
};
// example
var first = require('array-first');
first(['a', 'b', 'c', 'd', 'e', 'f']);
//=> 'a'
first(['a', 'b', 'c', 'd', 'e', 'f'], 1);
//=> 'a'
first(['a', 'b', 'c', 'd', 'e', 'f'], 3);
//=> ['a', 'b', 'c']
array-last: Get the last or last n elements in an array.
'use strict';
var isNumber = require('is-number');
module.exports = function last(arr, n) {
if (!Array.isArray(arr)) {
throw new Error('expected the first argument to be an array');
}
var len = arr.length;
if (len === 0) {
return null;
}
n = isNumber(n) ? +n : 1;
if (n === 1) {
return arr[len - 1];
}
var res = new Array(n);
while (n--) {
res[n] = arr[--len];
}
return res;
};
// example
var last = require('array-last');
last(['a', 'b', 'c', 'd', 'e', 'f']);
//=> 'f'
last(['a', 'b', 'c', 'd', 'e', 'f'], 1);
//=> 'f'
last(['a', 'b', 'c', 'd', 'e', 'f'], 3);
//=> ['d', 'e', 'f']
dedupe: removes duplicates from your array.
'use strict'
function dedupe (client, hasher) {
hasher = hasher || JSON.stringify
const clone = []
const lookup = {}
for (let i = 0; i < client.length; i++) {
let elem = client[i]
let hashed = hasher(elem)
if (!lookup[hashed]) {
clone.push(elem)
lookup[hashed] = true
}
}
return clone
}
module.exports = dedupe
// example
var dedupe = require('dedupe')
var a = [1, 2, 2, 3]
var b = dedupe(a)
console.log(b)
//result: [1, 2, 3]
var aa = [{a: 2}, {a: 1}, {a: 1}, {a: 1}]
var bb = dedupe(aa)
console.log(bb)
//result: [{a: 2}, {a: 1}]
var aaa = [{a: 2, b: 1}, {a: 1, b: 2}, {a: 1, b: 3}, {a: 1, b: 4}]
var bbb = dedupe(aaa, value => value.a)
console.log(bbb)
//result: [{a: 2, b: 1}, {a: 1,b: 2}]
This page total views
近期评论