UNPKG

jslib-tools

Version:

js工具库 封装常用的工具函数 如深拷贝 时间转换日期格式化、浏览器判断等,提高开发效率

190 lines (151 loc) 8.24 kB
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>JSDoc: Source: obj/array/array.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: obj/array/array.js</h1> <section> <article> <pre class="prettyprint source linenums"><code>/* * @Author: zhangyu * @Email: zhangdulin@outlook.com * @Date: 2021-06-25 11:30:34 * @LastEditors: zhangyu * @LastEditTime: 2021-07-28 14:17:37 * @Description: */ import { isFunc } from '../../judgement/index' /** * @description: 数组转对象 * @param {string} key * @param {any} arr * @return {object} */ export function arrayToObject(key, arr) { const mapping = {}; arr.forEach((item) => { if (item[key]) { mapping[item[key]] = item } }) return mapping } /** * 引用数组位移,性能优化 * @param {*} array * @param {number} from * @param {number} to */ export function arrayMoveMutate(array, from, to) { const startIndex = from &lt; 0 ? array.length + from : from; if (startIndex >= 0 &amp;&amp; startIndex &lt; array.length) { const endIndex = to &lt; 0 ? array.length + to : to; const [item] = array.splice(from, 1); array.splice(endIndex, 0, item); } } /** * 数组位移 * @param {array} array * @param {number} from * @param {number} to * @return {*} * @example ``` const { arrayMove } = require('@alrale/common-lib'); const input = ['a', 'b', 'c']; const array1 = arrayMove(input, 1, 2); console.log(array1); //=> ['a', 'c', 'b'] const array2 = arrayMove(input, -1, 0); console.log(array2); //=> ['c', 'a', 'b'] const array3 = arrayMove(input, -2, -3); console.log(array3); //=> ['b', 'a', 'c'] ``` */ export function arrayMove(array, from, to) { const _array = [...array]; arrayMoveMutate(_array, from, to); return _array; } /** * 按条件产生数组 arr(5,2,2) => [2,4,6,8,10] * eg:按1-10项产生斐波那契数列 =>arr(10, function (value, i, list) { return i > 1 ? list[i - 1] + list[i - 2] : 1; }) * @param {number} length 要产生的数组长度 * @param {number} value 数组项的初始值 * @param {number} step 递增值或处理函数(当前值,索引,当前产生的数组) */ export function arrFibonacci(length, value, step) { if (isFunc(value)) { step = value; value = 0; } if (value == undefined) value = 0; if (step == undefined) step = 1; var list = [], i = 0; if (isFunc(step)) { while (i &lt; length) { value = step(value, i, list); list.push(value); i++; } } else { while (i &lt; length) { list.push(value); value += step; i++; } } return list; } /** * 根据指定的键或索引抽取数组项的值 * eg:vals([{id:1},{id:2}], "id") => [1,2] * eg:vals([[1,"a"],[2,"b"]], 1) => ["a","b"] * @param {array} list 对象数组 * @param {string} prop 要抽取的属性 * @param {boolean} skipUndefined 是否跳过值不存在的项,默认为true */ export function arrVals(list, prop, skipUndefined) { if (!list) return []; skipUndefined = skipUndefined !== false; var len = list.length, i = 0, item, tmp = []; for (; i &lt; len; i++) { item = list[i]; if (item &amp;&amp; item[prop] != undefined) { tmp.push(item[prop]); } else if (!skipUndefined) { tmp.push(undefined); } } return tmp; }</code></pre> </article> </section> </div> <nav> <h2><a href="index.html">Home</a></h2><h3>Global</h3><ul><li><a href="global.html#alias">alias</a></li><li><a href="global.html#arrayMove">arrayMove</a></li><li><a href="global.html#arrayMoveMutate">arrayMoveMutate</a></li><li><a href="global.html#arrayToObject">arrayToObject</a></li><li><a href="global.html#arrayToTree">arrayToTree</a></li><li><a href="global.html#arrFibonacci">arrFibonacci</a></li><li><a href="global.html#arrVals">arrVals</a></li><li><a href="global.html#callHandler">callHandler</a></li><li><a href="global.html#camelize">camelize</a></li><li><a href="global.html#checkInt">checkInt</a></li><li><a href="global.html#checkNum">checkNum</a></li><li><a href="global.html#clipboardObj">clipboardObj</a></li><li><a href="global.html#compareSize">compareSize</a></li><li><a href="global.html#cookie">cookie</a></li><li><a href="global.html#cursortPosition">cursortPosition</a></li><li><a href="global.html#dasherize">dasherize</a></li><li><a href="global.html#dateFormat1">dateFormat1</a></li><li><a href="global.html#dateFormat2">dateFormat2</a></li><li><a href="global.html#debounce">debounce</a></li><li><a href="global.html#decode_url_param">decode_url_param</a></li><li><a href="global.html#def">def</a></li><li><a href="global.html#elDateFormat">elDateFormat</a></li><li><a href="global.html#escapeHTML">escapeHTML</a></li><li><a href="global.html#exportXls">exportXls</a></li><li><a href="global.html#extend">extend</a></li><li><a href="global.html#getBrowserModel">getBrowserModel</a></li><li><a href="global.html#getChangedData">getChangedData</a></li><li><a href="global.html#getChildren">getChildren</a></li><li><a href="global.html#getCookie">getCookie</a></li><li><a href="global.html#getDefaultAvatar">getDefaultAvatar</a></li><li><a href="global.html#getDeviceModel">getDeviceModel</a></li><li><a href="global.html#getHttpBase64">getHttpBase64</a></li><li><a href="global.html#getImgBase64">getImgBase64</a></li><li><a href="global.html#getThumbnails">getThumbnails</a></li><li><a href="global.html#getType">getType</a></li><li><a href="global.html#handleEmoji">handleEmoji</a></li><li><a href="global.html#handleParam">handleParam</a></li><li><a href="global.html#handleText">handleText</a></li><li><a href="global.html#isArray">isArray</a></li><li><a href="global.html#isArrayLike">isArrayLike</a></li><li><a href="global.html#isDiff">isDiff</a></li><li><a href="global.html#isFunc">isFunc</a></li><li><a href="global.html#isInt">isInt</a></li><li><a href="global.html#isNum">isNum</a></li><li><a href="global.html#isObject">isObject</a></li><li><a href="global.html#isObjEmpty">isObjEmpty</a></li><li><a href="global.html#isUInt">isUInt</a></li><li><a href="global.html#isUNum">isUNum</a></li><li><a href="global.html#makeArray">makeArray</a></li><li><a href="global.html#objectConversionToList">objectConversionToList</a></li><li><a href="global.html#objectToArray">objectToArray</a></li><li><a href="global.html#objTools">objTools</a></li><li><a href="global.html#parseTime">parseTime</a></li><li><a href="global.html#setVideoPlay">setVideoPlay</a></li><li><a href="global.html#sleepAction">sleepAction</a></li><li><a href="global.html#sleepSync">sleepSync</a></li><li><a href="global.html#sortMapByKey">sortMapByKey</a></li><li><a href="global.html#storage">storage</a></li><li><a href="global.html#throttle">throttle</a></li><li><a href="global.html#titleize">titleize</a></li><li><a href="global.html#toArray">toArray</a></li><li><a href="global.html#toLower">toLower</a></li><li><a href="global.html#toMap">toMap</a></li><li><a href="global.html#toObjectMap">toObjectMap</a></li><li><a href="global.html#toSimplifiedChinese">toSimplifiedChinese</a></li><li><a href="global.html#toUpper">toUpper</a></li><li><a href="global.html#unescapeHTML">unescapeHTML</a></li></ul> </nav> <br class="clear"> <footer> Documentation generated by <a href="https://github.com/jsdoc/jsdoc">JSDoc 3.6.7</a> on Wed Aug 25 2021 17:57:45 GMT+0800 (GMT+08:00) </footer> <script> prettyPrint(); </script> <script src="scripts/linenumber.js"> </script> </body> </html>