UNPKG

js-wrench

Version:

JS函数库

151 lines (132 loc) 6.98 kB
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>JSDoc: Source: unique.js</title> <script src="scripts/prettify/prettify.js"> </script> <script src="scripts/prettify/lang-css.js"> </script> <!--[if lt IE 9]> <script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script> <![endif]--> <link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css"> <link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css"> </head> <body> <div id="main"> <h1 class="page-title">Source: unique.js</h1> <section> <article> <pre class="prettyprint source linenums"><code>import typeOf from './typeOf'; import includes from './includes'; import trim from './trim'; import isArray from './isArray'; import isString from './isString'; import isNumber from './isNumber'; /** * @description 对数组去重 只对string[]|number[]去重 不使用new Set() * * @param {(Array&lt;string | number>)} arr 需要去重的数组 * @return {*} {(Array&lt;string | number>)} 返回一个没有重复数据的数组 * @example uniqueToArray([1,2,3,3,2]) => [1,2,3] */ const uniqueToArray = (arr) => { arr = arr.filter(Boolean); let newArr = []; let obj = {}; for (let i = 0; i &lt; arr.length; i++) { if (!obj[arr[i]]) { obj[arr[i]] = true; newArr.push(arr[i]); } } return newArr; }; /** * @description 对多种类型或者混合数组去重 * * @param {Array&lt;any>} arr 需要去重的数组 * @return {*} {Array&lt;any>} 返回一个没有重复数据的数组 * @example uniqueToSizzArray([{age:12},{age:13}]) uniqueToSizzArray(["a","b","b"]) */ const uniqueToSizzArray = (arr) => { arr = arr.filter(Boolean); let newArr = []; let newObjArr = []; let obj = {}; for (let i = 0; i &lt; arr.length; i++) { let item = arr[i]; if (typeOf(item, "object")) { if (!includes(newObjArr, item)) newObjArr.push(item); } else { if (!obj[item]) { obj[item] = true; newArr.push(item); } } } return newArr.concat(newObjArr); }; /** * @description 对字符串去重 * * @param {string} str 需要去重的字符串 * @return {*} {string} 返回新的字符串 * @example uniqueToSttring("abcbbbc") => abc */ const uniqueToSttring = (str) => { str = trim(str); //先对其去空格 let newStr = ""; let obj = {}; for (let i = 0; i &lt; str.length; i++) { if (!obj[str[i]]) { newStr += str[i]; obj[str[i]] = true; } } return newStr; }; /** * @description 对数字去重 * * @param {number} num 需要去重的数字 * @return {*} {number} 返回没有重复的数字 * @example uniqueToNumber(111123) => 123 */ const uniqueToNumber = (num) => { let str = "" + num; //对数字转字符串 return Number(uniqueToSttring(str)); }; /** * @description 对一个集合去重 * * @param {*} data 任意值 * @return {*} {*} 返回没有重复的数据 * @example unique([1,2,3,3]) => [1,2,3] unique([{age:1}, {age:2}, {age:1}]) => [{age:1}, {age:2}] */ const unique = (data) => { if (isArray(data)) return uniqueToSizzArray(data); else if (isString(data)) return uniqueToSttring(data); else if (isNumber(data)) return uniqueToNumber(data); return null; }; export default unique; </code></pre> </article> </section> </div> <nav> <h2><a href="index.html">Home</a></h2><h3>Classes</h3><ul><li><a href="CheckRegExp.html">CheckRegExp</a></li><li><a href="Format.html">Format</a></li></ul><h3>Global</h3><ul><li><a href="global.html#bind">bind</a></li><li><a href="global.html#debounce">debounce</a></li><li><a href="global.html#deepCopy">deepCopy</a></li><li><a href="global.html#each">each</a></li><li><a href="global.html#empty">empty</a></li><li><a href="global.html#extend">extend</a></li><li><a href="global.html#getBrowserType">getBrowserType</a></li><li><a href="global.html#getUID">getUID</a></li><li><a href="global.html#getVerifyCode">getVerifyCode</a></li><li><a href="global.html#has">has</a></li><li><a href="global.html#includes">includes</a></li><li><a href="global.html#indexOf">indexOf</a></li><li><a href="global.html#isAndroid">isAndroid</a></li><li><a href="global.html#isArray">isArray</a></li><li><a href="global.html#isBool">isBool</a></li><li><a href="global.html#isDate">isDate</a></li><li><a href="global.html#isFn">isFn</a></li><li><a href="global.html#isIOS">isIOS</a></li><li><a href="global.html#isiPad">isiPad</a></li><li><a href="global.html#isMap">isMap</a></li><li><a href="global.html#isNaN">isNaN</a></li><li><a href="global.html#isNull">isNull</a></li><li><a href="global.html#isNumber">isNumber</a></li><li><a href="global.html#isObj">isObj</a></li><li><a href="global.html#isPC">isPC</a></li><li><a href="global.html#isPrimitive">isPrimitive</a></li><li><a href="global.html#isPromise">isPromise</a></li><li><a href="global.html#isRegExp">isRegExp</a></li><li><a href="global.html#isSet">isSet</a></li><li><a href="global.html#isString">isString</a></li><li><a href="global.html#isSymbol">isSymbol</a></li><li><a href="global.html#isUndefined">isUndefined</a></li><li><a href="global.html#isWPhone">isWPhone</a></li><li><a href="global.html#ltrim">ltrim</a></li><li><a href="global.html#noop">noop</a></li><li><a href="global.html#random">random</a></li><li><a href="global.html#remove">remove</a></li><li><a href="global.html#reverse">reverse</a></li><li><a href="global.html#rtrim">rtrim</a></li><li><a href="global.html#throttle">throttle</a></li><li><a href="global.html#toFirstLower">toFirstLower</a></li><li><a href="global.html#toFirstUpper">toFirstUpper</a></li><li><a href="global.html#toKeys">toKeys</a></li><li><a href="global.html#toLowerCase">toLowerCase</a></li><li><a href="global.html#toParam">toParam</a></li><li><a href="global.html#toQuery">toQuery</a></li><li><a href="global.html#toUpperCase">toUpperCase</a></li><li><a href="global.html#toValues">toValues</a></li><li><a href="global.html#trim">trim</a></li><li><a href="global.html#typeOf">typeOf</a></li><li><a href="global.html#unique">unique</a></li><li><a href="global.html#uniqueToArray">uniqueToArray</a></li><li><a href="global.html#uniqueToNumber">uniqueToNumber</a></li><li><a href="global.html#uniqueToSizzArray">uniqueToSizzArray</a></li><li><a href="global.html#uniqueToSttring">uniqueToSttring</a></li></ul> </nav> <br class="clear"> <footer> Documentation generated by <a href="https://github.com/jsdoc/jsdoc">JSDoc 3.6.6</a> on Wed Dec 16 2020 10:48:43 GMT+0800 (GMT+08:00) </footer> <script> prettyPrint(); </script> <script src="scripts/linenumber.js"> </script> </body> </html>