🎩 You're Invited:Meet the Socket team at Black Hat in Las Vegas, August 3-6.RSVP
Sign In

noshjs

Package Overview
Dependencies
Maintainers
1
Versions
11
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

noshjs - npm Package Compare versions

Comparing version
0.3.0
to
0.4.0
+19
-16
dist/nosh.common.js
/*!
* nosh.js v0.3.0
* nosh.js v0.4.0
* https://github.com/lmk123/noshjs

@@ -41,8 +41,8 @@ * Released under the MIT License.

* 解析一个数字的各个部分
* @param {number|string} number
* @param {*} number
* @return {{minus: boolean, integer: string, decimal: string}|null}
*/
var parseNumber = function (number) {
number = Number(number);
if (!isNumber(number)) { return null }
number = parseFloat(number);
if (isNaN(number)) { return null }
var minus = false;

@@ -73,3 +73,3 @@ var stringValue = String(number);

* @param {number} [fixed=2] - 保留几位小数
* @return {string}
* @return {string|null}
* @example kmbt(2211) -> 2.21K

@@ -81,3 +81,3 @@ */

var num = parseNumber(value);
if (!num) { return value }
if (!num) { return null }
// 整数部分有多少个 3 位

@@ -93,4 +93,4 @@ var count = Math.min(Math.ceil(num.integer.length / SPLIT_COUNT), KMB_CEILING) - 1;

* 将一个数字转换为加了千分位的字符串
* @param {number} value
* @return {string}
* @param {*} value
* @return {string|null}
* @example thousands(12345.67) => '12,345.67'

@@ -100,3 +100,3 @@ */

var num = parseNumber(value);
if (!num) { return value }
if (!num) { return null }
var minus = num.minus;

@@ -121,6 +121,9 @@ var integer = num.integer;

* 将一个对象转换成查询字符串
* @param obj
* @param {object} obj
* @param {string} [prefix]
* @return {string}
*/
var obj2qs = function (obj) {
var obj2qs = function (obj, prefix) {
if ( prefix === void 0 ) prefix = '';
var qs = [];

@@ -132,3 +135,3 @@ for (var key in obj) {

}
return qs.join('&')
return prefix + qs.join('&')
};

@@ -203,5 +206,5 @@

* 将一个小数转换为百分比
* @param {number|string} number
* @param {*} value
* @param {number} [fixed=2]
* @return {string}
* @return {string|null}
*/

@@ -211,4 +214,4 @@ var percentage = function (value, fixed) {

var number = Number(value);
if (!isNumber(number)) { return value }
var number = parseFloat(value);
if (isNaN(number)) { return null }
var numberString = (number * 100).toFixed(fixed);

@@ -215,0 +218,0 @@ return parseFloat(numberString) + '%'

/*!
* nosh.js v0.3.0
* nosh.js v0.4.0
* https://github.com/lmk123/noshjs

@@ -37,8 +37,8 @@ * Released under the MIT License.

* 解析一个数字的各个部分
* @param {number|string} number
* @param {*} number
* @return {{minus: boolean, integer: string, decimal: string}|null}
*/
var parseNumber = function (number) {
number = Number(number);
if (!isNumber(number)) { return null }
number = parseFloat(number);
if (isNaN(number)) { return null }
var minus = false;

@@ -69,3 +69,3 @@ var stringValue = String(number);

* @param {number} [fixed=2] - 保留几位小数
* @return {string}
* @return {string|null}
* @example kmbt(2211) -> 2.21K

@@ -77,3 +77,3 @@ */

var num = parseNumber(value);
if (!num) { return value }
if (!num) { return null }
// 整数部分有多少个 3 位

@@ -89,4 +89,4 @@ var count = Math.min(Math.ceil(num.integer.length / SPLIT_COUNT), KMB_CEILING) - 1;

* 将一个数字转换为加了千分位的字符串
* @param {number} value
* @return {string}
* @param {*} value
* @return {string|null}
* @example thousands(12345.67) => '12,345.67'

@@ -96,3 +96,3 @@ */

var num = parseNumber(value);
if (!num) { return value }
if (!num) { return null }
var minus = num.minus;

@@ -117,6 +117,9 @@ var integer = num.integer;

* 将一个对象转换成查询字符串
* @param obj
* @param {object} obj
* @param {string} [prefix]
* @return {string}
*/
var obj2qs = function (obj) {
var obj2qs = function (obj, prefix) {
if ( prefix === void 0 ) prefix = '';
var qs = [];

@@ -128,3 +131,3 @@ for (var key in obj) {

}
return qs.join('&')
return prefix + qs.join('&')
};

@@ -199,5 +202,5 @@

* 将一个小数转换为百分比
* @param {number|string} number
* @param {*} value
* @param {number} [fixed=2]
* @return {string}
* @return {string|null}
*/

@@ -207,4 +210,4 @@ var percentage = function (value, fixed) {

var number = Number(value);
if (!isNumber(number)) { return value }
var number = parseFloat(value);
if (isNaN(number)) { return null }
var numberString = (number * 100).toFixed(fixed);

@@ -211,0 +214,0 @@ return parseFloat(numberString) + '%'

/*!
* nosh.js v0.3.0
* nosh.js v0.4.0
* https://github.com/lmk123/noshjs

@@ -43,8 +43,8 @@ * Released under the MIT License.

* 解析一个数字的各个部分
* @param {number|string} number
* @param {*} number
* @return {{minus: boolean, integer: string, decimal: string}|null}
*/
var parseNumber = function (number) {
number = Number(number);
if (!isNumber(number)) { return null }
number = parseFloat(number);
if (isNaN(number)) { return null }
var minus = false;

@@ -75,3 +75,3 @@ var stringValue = String(number);

* @param {number} [fixed=2] - 保留几位小数
* @return {string}
* @return {string|null}
* @example kmbt(2211) -> 2.21K

@@ -83,3 +83,3 @@ */

var num = parseNumber(value);
if (!num) { return value }
if (!num) { return null }
// 整数部分有多少个 3 位

@@ -95,4 +95,4 @@ var count = Math.min(Math.ceil(num.integer.length / SPLIT_COUNT), KMB_CEILING) - 1;

* 将一个数字转换为加了千分位的字符串
* @param {number} value
* @return {string}
* @param {*} value
* @return {string|null}
* @example thousands(12345.67) => '12,345.67'

@@ -102,3 +102,3 @@ */

var num = parseNumber(value);
if (!num) { return value }
if (!num) { return null }
var minus = num.minus;

@@ -123,6 +123,9 @@ var integer = num.integer;

* 将一个对象转换成查询字符串
* @param obj
* @param {object} obj
* @param {string} [prefix]
* @return {string}
*/
var obj2qs = function (obj) {
var obj2qs = function (obj, prefix) {
if ( prefix === void 0 ) prefix = '';
var qs = [];

@@ -134,3 +137,3 @@ for (var key in obj) {

}
return qs.join('&')
return prefix + qs.join('&')
};

@@ -205,5 +208,5 @@

* 将一个小数转换为百分比
* @param {number|string} number
* @param {*} value
* @param {number} [fixed=2]
* @return {string}
* @return {string|null}
*/

@@ -213,4 +216,4 @@ var percentage = function (value, fixed) {

var number = Number(value);
if (!isNumber(number)) { return value }
var number = parseFloat(value);
if (isNaN(number)) { return null }
var numberString = (number * 100).toFixed(fixed);

@@ -217,0 +220,0 @@ return parseFloat(numberString) + '%'

/*!
* nosh.js v0.3.0
* nosh.js v0.4.0
* https://github.com/lmk123/noshjs
* Released under the MIT License.
*/
!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports):"function"==typeof define&&define.amd?define(["exports"],n):n(e.nosh={})}(this,function(e){"use strict";function n(e){if(Array.isArray(e)){var t=[];return e.forEach(function(e,r){t[r]=n(e)}),t}return"object"==typeof e&&e?r({},e):e}function r(e,r){for(var t in r)c.call(r,t)&&(e[t]=n(r[t]));return e}var t=function(e){return"number"==typeof e&&!isNaN(e)},i=function(e){if(e=Number(e),!t(e))return null;var n=!1,r=String(e);"-"===r[0]&&(n=!0,r=r.slice(1));var i=r.indexOf(".");return{minus:n,integer:i>0?r.slice(0,i):r,decimal:i>0?r.slice(i):""}},o=["","K","M","B","T","P","E"],u=o.length,f=Math.pow(10,3),a=Object.prototype.hasOwnProperty,c=Object.prototype.hasOwnProperty;e.extend=function(e){for(var n=[],t=arguments.length-1;t-- >0;)n[t]=arguments[t+1];return null==e?e:(n.forEach(function(n){null!=n&&r(e,n)}),e)},e.copy=n,e.get=function(e,n,r){if(null==e)return r;var t=e;n=[].concat(n);for(var i=0;i<n.length;i+=1)if(null==(t=t[n[i]]))return r;return t},e.isNumber=t,e.kmbt=function(e,n){void 0===n&&(n=2);var r=i(e);if(!r)return e;var t=Math.min(Math.ceil(r.integer.length/3),u)-1;return Number((e/Math.pow(f,t)).toFixed(n))+o[t]},e.thousands=function(e){var n=i(e);if(!n)return e;for(var r=n.minus,t=n.integer,o=n.decimal,u=t.length,f=Math.ceil(u/3),a=[],c=0;c<f;c++)a.unshift(t.slice(-3*(c+1),u-3*c));return(r?"-":"")+a.join(",")+o},e.obj2qs=function(e){var n=[];for(var r in e)a.call(e,r)&&n.push(r+"="+encodeURIComponent(e[r]));return n.join("&")},e.remove=function(e,n){var r=e.indexOf(n);r>=0&&e.splice(r,1)},e.percentage=function(e,n){void 0===n&&(n=2);var r=Number(e);if(!t(r))return e;var i=(100*r).toFixed(n);return parseFloat(i)+"%"},Object.defineProperty(e,"__esModule",{value:!0})});
!function(n,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e(n.nosh={})}(this,function(n){"use strict";function e(n){if(Array.isArray(n)){var t=[];return n.forEach(function(n,r){t[r]=e(n)}),t}return"object"==typeof n&&n?r({},n):n}function r(n,r){for(var t in r)f.call(r,t)&&(n[t]=e(r[t]));return n}var t=function(n){if(n=parseFloat(n),isNaN(n))return null;var e=!1,r=String(n);"-"===r[0]&&(e=!0,r=r.slice(1));var t=r.indexOf(".");return{minus:e,integer:t>0?r.slice(0,t):r,decimal:t>0?r.slice(t):""}},i=["","K","M","B","T","P","E"],o=i.length,u=Math.pow(10,3),a=Object.prototype.hasOwnProperty,f=Object.prototype.hasOwnProperty;n.extend=function(n){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];return null==n?n:(e.forEach(function(e){null!=e&&r(n,e)}),n)},n.copy=e,n.get=function(n,e,r){if(null==n)return r;var t=n;e=[].concat(e);for(var i=0;i<e.length;i+=1)if(null==(t=t[e[i]]))return r;return t},n.isNumber=function(n){return"number"==typeof n&&!isNaN(n)},n.kmbt=function(n,e){void 0===e&&(e=2);var r=t(n);if(!r)return null;var a=Math.min(Math.ceil(r.integer.length/3),o)-1;return Number((n/Math.pow(u,a)).toFixed(e))+i[a]},n.thousands=function(n){var e=t(n);if(!e)return null;for(var r=e.minus,i=e.integer,o=e.decimal,u=i.length,a=Math.ceil(u/3),f=[],c=0;c<a;c++)f.unshift(i.slice(-3*(c+1),u-3*c));return(r?"-":"")+f.join(",")+o},n.obj2qs=function(n,e){void 0===e&&(e="");var r=[];for(var t in n)a.call(n,t)&&r.push(t+"="+encodeURIComponent(n[t]));return e+r.join("&")},n.remove=function(n,e){var r=n.indexOf(e);r>=0&&n.splice(r,1)},n.percentage=function(n,e){void 0===e&&(e=2);var r=parseFloat(n);if(isNaN(r))return null;var t=(100*r).toFixed(e);return parseFloat(t)+"%"},Object.defineProperty(n,"__esModule",{value:!0})});

@@ -1,11 +0,9 @@

import isNumber from '../isNumber'
/**
* 解析一个数字的各个部分
* @param {number|string} number
* @param {*} number
* @return {{minus: boolean, integer: string, decimal: string}|null}
*/
export default function (number) {
number = Number(number)
if (!isNumber(number)) return null
number = parseFloat(number)
if (isNaN(number)) return null
let minus = false

@@ -12,0 +10,0 @@ let stringValue = String(number)

@@ -12,3 +12,3 @@ import parseNumber from './internal/parseNumber'

* @param {number} [fixed=2] - 保留几位小数
* @return {string}
* @return {string|null}
* @example kmbt(2211) -> 2.21K

@@ -18,3 +18,3 @@ */

const num = parseNumber(value)
if (!num) return value
if (!num) return null
// 整数部分有多少个 3 位

@@ -21,0 +21,0 @@ const count = Math.min(Math.ceil(num.integer.length / SPLIT_COUNT), KMB_CEILING) - 1

@@ -5,6 +5,7 @@ const { hasOwnProperty } = Object.prototype

* 将一个对象转换成查询字符串
* @param obj
* @param {object} obj
* @param {string} [prefix]
* @return {string}
*/
export default function (obj) {
export default function (obj, prefix = '') {
const qs = []

@@ -16,3 +17,3 @@ for (let key in obj) {

}
return qs.join('&')
return prefix + qs.join('&')
}

@@ -1,14 +0,12 @@

import isNumber from './isNumber'
/**
* 将一个小数转换为百分比
* @param {number|string} number
* @param {*} value
* @param {number} [fixed=2]
* @return {string}
* @return {string|null}
*/
export default function (value, fixed = 2) {
const number = Number(value)
if (!isNumber(number)) return value
const number = parseFloat(value)
if (isNaN(number)) return null
let numberString = (number * 100).toFixed(fixed)
return parseFloat(numberString) + '%'
}

@@ -8,4 +8,4 @@ import parseNumber from './internal/parseNumber'

* 将一个数字转换为加了千分位的字符串
* @param {number} value
* @return {string}
* @param {*} value
* @return {string|null}
* @example thousands(12345.67) => '12,345.67'

@@ -15,3 +15,3 @@ */

const num = parseNumber(value)
if (!num) return value
if (!num) return null
const {

@@ -18,0 +18,0 @@ minus,

{
"name": "noshjs",
"version": "0.3.0",
"version": "0.4.0",
"main": "dist/nosh.common.js",
"module": "dist/nosh.esm.js",
"unpkg": "dist/nosh.js",
"files": ["libs", "dist"],
"files": [
"libs",
"dist"
],
"scripts": {
"lint":
"eslint --ignore-pattern '/dist/' --ignore-pattern '/coverage/' '**/*.js'",
"lint": "eslint --ignore-pattern '/dist/' --ignore-pattern '/coverage/' '**/*.js'",
"build": "node build/build.js",
"pretest": "yarn run lint && yarn run build",
"test":
"istanbul cover node_modules/jasmine/bin/jasmine.js -- JASMINE_CONFIG_PATH=jasmine.json",
"test": "istanbul cover node_modules/jasmine/bin/jasmine.js -- JASMINE_CONFIG_PATH=jasmine.json",
"prepublishOnly": "yarn test",
"upload-coverage":
"cat coverage/lcov.info | node_modules/coveralls/bin/coveralls.js"
"upload-coverage": "cat coverage/lcov.info | node_modules/coveralls/bin/coveralls.js"
},

@@ -19,0 +19,0 @@ "devDependencies": {

@@ -1,7 +0,100 @@

# nosh.js
# nosh.js [![Build Status](https://img.shields.io/travis/lmk123/noshjs/master.svg?style=flat-square)](https://travis-ci.org/lmk123/noshjs) [![Coverage Status](https://img.shields.io/coveralls/lmk123/noshjs/master.svg?style=flat-square)](https://coveralls.io/github/lmk123/noshjs?branch=master) [![dependencies Status](https://img.shields.io/david/lmk123/noshjs.svg?style=flat-square)](https://david-dm.org/lmk123/noshjs) [![NPM Version](https://img.shields.io/npm/v/noshjs.svg?style=flat-square)](https://www.npmjs.com/package/noshjs)
[![Build Status](https://img.shields.io/travis/lmk123/noshjs/master.svg?style=flat-square)](https://travis-ci.org/lmk123/noshjs)
[![Coverage Status](https://img.shields.io/coveralls/lmk123/noshjs/master.svg?style=flat-square)](https://coveralls.io/github/lmk123/noshjs?branch=master)
[![dependencies Status](https://img.shields.io/david/lmk123/noshjs.svg?style=flat-square)](https://david-dm.org/lmk123/noshjs)
[![devDependencies Status](https://img.shields.io/david/dev/lmk123/noshjs.svg?style=flat-square)](https://david-dm.org/lmk123/noshjs?type=dev)
[![NPM Version](https://img.shields.io/npm/v/noshjs.svg?style=flat-square)](https://www.npmjs.com/package/noshjs)
一个我自己常用的工具函数库。
## 安装
可以用 NPM 或者 Yarn 安装:
```bash
npm i noshjs
```
或者直接将 [nosh.js](https://unpkg.com/noshjs) 下载到你的项目中,通过 script 标签引用,此时会注册一个全局变量 `window.nosh`。
## API
### nosh.copy(value)
类似于 [lodash.cloneDeep](https://lodash.com/docs/4.7.11#cloneDeep),但没有对特殊类型(例如 Set、Map、Buffer 等)做处理,所以性能比 lodash.cloneDeep 高,见 https://github.com/lodash/lodash/issues/1984
### nosh.extend(object, [sources])
类似于 [lodash.merge](https://lodash.com/docs/4.7.11#merge),但没有对特殊类型做处理。
### nosh.get(object, path, [defaultValue])
类似于 [lodash.get](https://lodash.com/docs/4.7.11#get),但是在读取到 `null` 时也会返回 `defaultValue`。例如:
```js
lodash.get({ a: null }, 'a', 'default value') // null
nosh.get({ a: null }, 'a', 'default value') // 'default value'
```
这个方法性能比 lodash.get 低,如果介意的话,可以基于 lodash.get 封装:
```js
function noshGet(object, path, defaultValue) {
let result = lodash.get(object, path, defaultValue)
if (result === null) result = defaultValue
return result
}
```
### nosh.isNumber(value)
判断 `value` 是否满足 `typeof value === 'number' && !isNaN(value)`。
### nosh.kmbt(value, [fixed = 2])
将一个数字转换成 KMBT 表现形式的字符串。如果 `value` 不能转换成数字,则返回 `null`。第二个参数可以设置保留多少位小数,默认保留两位。
```js
nosh.kmbt('not a number') // null
nosh.kmbt(988) // '988'
nosh.kmbt(9888) // '9.89K'
nosh.kmbt(9888777) // '9.89M'
nosh.kmbt(98887776666) // '98.89B'
nosh.kmbt(9888777666555) // '9.89T'
nosh.kmbt(9888777666555444) // '9.89P'
nosh.kmbt(9888777666555444333) // '9.89E')
```
### nosh.obj2qs(object, [prefix])
将一个对象转换成查询字符串。第二个参数用于指定查询字符串的前缀。
```js
nosh.obj2qs({ a: 1, b: 2 }, '?') // '?a=1&b=2'
```
### nosh.percentage(value, [fixed = 2])
将一个数字转换成百分比表现形式的字符串。如果 `value` 不能转换成数字,则返回 `null`。第二个参数可以设置保留多少位小数,默认保留两位。
```js
nosh.percentage('not a number') // null
nosh.percentage('1') // '100%'
nosh.percentage(-0.1) // '-10%'
```
### nosh.remove(array, item)
从数组中删除指定的元素,这个方法只删除第一个匹配的元素。
```js
nosh.remove([1, 2, 3, 1], 1) // [2, 3, 1]
```
### nosh.thousands(value)
将一个数字转换成百分比表现形式的字符串。如果 `value` 不能转换成数字,则返回 `null`。
```js
nosh.thousands('not a number') // null
nosh.thousands(1000) // '1,000'
```
## 许可
MIT