生成随机数

  1. /**
  2. * 生成随机数
  3. * @param {String} len - 最大值
  4. * @returns {Number}
  5. */
  6. function getRandowInt(len) {
  7. var num = parseInt(Math.random() * len + 1);
  8. return num;
  9. }

获取url后面的参数

  1. /**
  2. * 获取URL中的参数值
  3. * @param {String} name - 参数key
  4. * @returns {String}
  5. */
  6. function getUrlParameter(name) {
  7. var reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)");
  8. var r = window.location.search.substr(1).match(reg);
  9. if(r!=null)return unescape(r[2]); return null;
  10. };

类数组转数组

  1. // 方式一、二
  2. Array.prototype.slice.call(arguments);
  3. Array.prototype.splice.call(arrayLike,0);
  4. // ES6
  5. Array.from(arguments);
  6. const array = [...arguments];
  7. // 常见的类数组
  8. 1arguments
  9. 2DOM对象
  10. document.getElementsByTagName('div')

获取多维数组的中的某一项

  1. /**
  2. * @param {Array} array
  3. * @param {any}
  4. */
  5. function getArrayItemByKey(array, key) {
  6. var result = [];
  7. function fn(array, key) {
  8. for(var i = 0; i < array.length; i++) {
  9. if (array[i].children && array[i].children.length) {
  10. if (array[i].id == key) {
  11. result.push(array[i]);
  12. } else {
  13. fn(array[i].children, key);
  14. }
  15. } else {
  16. if (array[i].id == key) {
  17. result.push(array[i]);
  18. }
  19. }
  20. }
  21. }
  22. fn(array, key)
  23. return result;
  24. }
  25. // 调用
  26. var temp = [
  27. {
  28. id: 1,
  29. name: 1,
  30. children: [
  31. {
  32. id: 1.1,
  33. name: 1.1,
  34. children: [
  35. {
  36. id: 1.11,
  37. name: 1.11,
  38. children: []
  39. },
  40. ]
  41. },
  42. {
  43. id: 1.2,
  44. name: 1.2,
  45. children: []
  46. }
  47. ]
  48. },
  49. {
  50. id: 2,
  51. name: 2,
  52. children: []
  53. }
  54. ];
  55. console.log(getArrayItemByKey(temp, 1.11))
  56. console.log(getArrayItemByKey(temp, 1))

多维数组转一维数组

  1. let _array: any = [];
  2. function deepCloneByRecursion(array, key) {
  3. for(var i = 0; i < array.length; i++) {
  4. _array.push(array[i].id);
  5. if (array[i].children && array[i].children.length) {
  6. deepCloneByRecursion(array[i].children, key);
  7. } else {
  8. // todo
  9. }
  10. }
  11. return array;
  12. }

实现深拷贝

  1. /**
  2. * 方式一
  3. * @param {Object} obj
  4. * @returns {Objects}
  5. */
  6. function deepCloneByJSON(obj) {
  7. var _obj = JSON.stringify(obj);
  8. return JSON.parse(_obj);
  9. }
  10. /**
  11. * 方式二
  12. * @param {Object} obj
  13. * @returns {Objects}
  14. */
  15. function deepCloneByRecursion(obj) {
  16. var objClone = Array.isArray(obj) ? [] : {};
  17. if (obj && typeof obj === 'object') {
  18. for(var key in obj) {
  19. if (obj[key] && typeof obj[key] === 'object') {
  20. objClone[key] = deepCloneByRecursion(obj[key])
  21. } else {
  22. objClone[key] = obj[key];
  23. }
  24. }
  25. }
  26. return objClone;
  27. }

渲染函数

  1. /**
  2. * @return {void}
  3. */
  4. function render() {
  5. // @return {[object HTMLScriptElement]}
  6. var newNode = document.createElement("script");
  7. newNode.setAttribute('type', 'text/javascript');
  8. // 参考点
  9. var referenceNode = document.getElementsByTagName("script")[0];
  10. referenceNode.parentNode.insertBefore(newNode, referenceNode);
  11. // 直接插入
  12. document.head.appendChild(newNode);
  13. }

获取数据类型

  1. /**
  2. * @param {Object} obj -任意对象
  3. * @returns {String}
  4. */
  5. function getType(obj){
  6. let type = typeof obj;
  7. if (type !== "object") { // 先进行typeof判断,如果是基础数据类型,直接返回
  8. return type;
  9. }
  10. // 对于typeof返回结果是object的,再进行如下的判断,正则返回结果
  11. return Object.prototype.toString.call(obj).replace(/^\[object (\S+)\]$/, '$1');
  12. }

随机生成颜色

  1. /**
  2. * @param {String | any} type -是否是rgb 默认是16进制
  3. * @returns {String}
  4. */
  5. function getRandomColor(type) {
  6. var r = Math.floor(Math.random() * 256);
  7. var g = Math.floor(Math.random() * 256);
  8. var b = Math.floor(Math.random() * 256);
  9. var color = type || type === 'rgb' ? "rgb(" + r + ',' + g + ',' + b + ")" : '#' + Math.floor(Math.random() * 0xffffff).toString(16)
  10. return color;
  11. }

异常处理

  1. var s = 1;
  2. try {
  3. if (s < 5) throw '小于5';
  4. } catch(err) {
  5. alert(err);
  6. }

获取随机图片

官网:https://picsum.photos/ 【美国】
Images from Unsplash:https://unsplash.com/ 【美国】

  1. 【获取高度和宽度的图片】
  2. https://picsum.photos/200/300
  3. 正方形图片:
  4. https://picsum.photos/200
  5. 静态随机存图像
  6. https://picsum.photos/seed/picsum/200/300
  7. 【灰度】
  8. 得到一个图像灰通过追加 ?grayscale 以结束的网址。
  9. https://picsum.photos/200/300?grayscale
  10. 模糊
  11. 得到一个模糊的图像通过追加 ?blur 以结束的网址。
  12. https://picsum.photos/200/300/?blur
  13. 你可以调整数量的模糊通过提供数量之间的 1 10.
  14. https://picsum.photos/200/300/?blur=2
  15. 【列表的图像】
  16. 获得一个名单的图像使用的 /v2/list 终点。
  17. https://picsum.photos/v2/list
  18. API将回归的30个项目每页的默认。
  19. 要求另一个网页,使用的 ?page 参数。
  20. 改变项目的数量每页,使用的 ?limit 参数。
  21. https://picsum.photos/v2/list?page=2&limit=100
  22. 【图像细节】
  23. 获得信息是关于一个特定的图像使用的 /id/{id}/info 终点。
  24. https://picsum.photos/id/0/info
  25. 你可以找出标识图像看 Picsum-ID 标题或 User Comment 领域在EXIF元数据。

js数字金额大写转换

  1. var digitUppercase = function(n) {
  2. var fraction = ['角', '分'];
  3. var digit = [
  4. '零', '壹', '贰', '叁', '肆',
  5. '伍', '陆', '柒', '捌', '玖'
  6. ];
  7. var unit = [
  8. ['元', '万', '亿'],
  9. ['', '拾', '佰', '仟']
  10. ];
  11. var head = n < 0 ? '欠' : '';
  12. n = Math.abs(n);
  13. var s = '';
  14. for (var i = 0; i < fraction.length; i++) {
  15. s += (digit[Math.floor(n * 10 * Math.pow(10, i)) % 10] + fraction[i]).replace(/零./, '');
  16. }
  17. s = s || '整';
  18. n = Math.floor(n);
  19. for (var i = 0; i < unit[0].length && n > 0; i++) {
  20. var p = '';
  21. for (var j = 0; j < unit[1].length && n > 0; j++) {
  22. p = digit[n % 10] + unit[1][j] + p;
  23. n = Math.floor(n / 10);
  24. }
  25. s = p.replace(/(零.)*零$/, '').replace(/^$/, '零') + unit[0][i] + s;
  26. }
  27. return head + s.replace(/(零.)*零元/, '元')
  28. .replace(/(零.)+/g, '零')
  29. .replace(/^整$/, '零元整');
  30. }
  31. // 调用
  32. console.log(digitUppercase(3));
  33. // 参考:https://www.jq22.com/webqd3030