【前端】JavaScript 方法速查大全-函数、正则、格式化、转换、进制、 XSS 转义(四)

news2024/12/25 22:11:43

🔥 前言

在现代前端开发中,JavaScript 是不可或缺的语言。无论是处理数据、操作 DOM,还是进行复杂的逻辑运算,掌握 JavaScript 的各种方法都是每位开发者的必修课。本文将为您提供一个全面、系统的 JavaScript 方法参考,涵盖数组操作、对象处理、正则表达式、数据格式转换等众多方面,助您在开发中游刃有余!💪

JavaScript 方法速查

📚 JavaScript 方法速查

1. 数学函数的实用示例

JavaScript 提供了丰富的数学函数,以下是一些常用的示例:

console.log(parseInt(5.12)); // 5
console.log(Math.floor(5.12)); // 5
console.log(Math.ceil(5.12)); // 6
console.log(Math.round(5.499)); // 5
console.log(Math.round(5.501)); // 6
console.log(Math.abs(-5)); // 5
console.log(Math.max(5, 6)); // 6
console.log(Math.min(5, 6)); // 5
console.log(Math.random()); // 随机数 (0-1)

2. 常用正则表达式速查

正则表达式是处理字符串的强大工具,以下是一些常见的正则表达式示例:

消除字符串首尾空格
let reg = /^\s+|\s+$/g;
let str = ' #id div.class '; 
console.log(str.replace(reg, '')); // "#id div.class"
替换手机号码
var reg = /1[24578]\d{9}/;
var str = '姓名:朱昆鹏 手机:15932638907';
console.log(str.replace(reg, '***')); // "姓名:朱昆鹏 手机:***"
替换敏感字
let str = '中国中国人民解放军中华人民共和国';
let r = str.replace(/中国|军/g, input => '*'.repeat(input.length));
console.log(r); // "****人民解放*中华人民共和国"
千位分隔符
let reg = /(\d)(?=(?:\d{3})+$)/g;
let numStr = '100002003232322';
let formatted = numStr.replace(reg, '$1,');
console.log(formatted); // "100,002,003,232,322"
验证手机号码
let reg = /^1((3[\d])|(4[5,6,9])|(5[0-3,5-9])|(6[5-7])|(7[0-8])|(8[1-3,5-8])|(9[1,8,9]))\d{8}$/;
console.log(reg.test('15932539095')); // true
console.log(reg.test('234554568997')); // false

3. 变量交换

在 JavaScript 中,变量交换可以通过解构赋值轻松实现:

let a = 1;
let b = 2;
[a, b] = [b, a];
console.log(a, b); // 2, 1

4. 格式化对象为 JSON 代码

使用 JSON.stringify 可以将对象格式化为 JSON 字符串:

const formatted = JSON.stringify({name: 'Jhon', age: 18, address: 'sz'}, null, 4);
console.log(formatted);
/*
{
    "name": "Jhon",
    "age": 18,
    "address": "sz"
}
*/

5. 随机生成六位数字验证码

const code = Math.floor(Math.random() * 1000000).toString().padStart(6, "0");
console.log(code); // 例如 '042377'

6. RGB 颜色转 16 进制颜色

const RGBToHex = (r, g, b) => ((r << 16) + (g << 8) + b).toString(16).padStart(6, '0');
console.log(RGBToHex(255, 165, 1)); // 'ffa501'

7. 生成随机整数

function randomNum(min, max) {
  switch (arguments.length) {
    case 1:
      return Math.floor(Math.random() * min + 1);
    case 2:
      return Math.floor(Math.random() * (max - min + 1) + min);
    default:
      return 0;
  }
}

console.log(randomNum(1, 10)); // 随机 [1,10] 的整数

8. 去除空格

function trim(str, type = 1) {
    if (![1, 2, 3, 4].includes(type)) return;
    switch (type) {
        case 1:
            return str.replace(/\s/g, "");
        case 2:
            return str.replace(/(^\s)|(\s*$)/g, "");
        case 3:
            return str.replace(/(^\s)/g, "");
        case 4:
            return str.replace(/(\s$)/g, "");
        default:
            return str;
    }
}

console.log(trim('  Hello World  ', 2)); // "Hello World"

9. 大小写转换

function turnCase(str, type) {
    switch (type) {
        case 1:
            return str.toUpperCase();
        case 2:
            return str.toLowerCase();
        case 3:
            return str.charAt(0).toUpperCase() + str.slice(1).toLowerCase();
        default:
            return str;
    }
}

console.log(turnCase('hello World', 1)); // "HELLO WORLD"

10. 随机生成 16 进制颜色

function hexColor() {
    let str = '#';
    let arr = ['0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'];
    for (let i = 0; i < 6; i++) {
        let index = Math.floor(Math.random() * 16);
        str += arr[index];
    }
    return str;
}

console.log(hexColor()); // 例如 '#FFA501'

11. 统计一段文字中指定文字出现次数

function keywordsCount(text, keywords) {
    return text.split(keywords).length - 1;
}

console.log(keywordsCount('hello world, hello JavaScript', 'hello')); // 2

12. 轮询等待函数

function pollingWaiting(callBack, resCallBack, time = 100, lastTime = 1000) {
    let startTime = Date.now();
    let t = null;
    const fn = function () {
        t = setTimeout(() => {
            if (!callBack()) {
                if (Date.now() - startTime > lastTime) {
                    clearTimeout(t);
                } else {
                    fn();
                }
            } else {
                resCallBack();
            }
        }, time);
    };
    fn();
}

// 示例
let a = 1;
setTimeout(() => {
  a = 2;
}, 500);

pollingWaiting(
  () => a === 2,
  () => { console.log('触发了', a); },
  100,
  800
);
// 输出:
// "触发了 2"

13. 大数值转换为万,亿

function numConversion(num, point = 2) {
  let numStr = Math.floor(num).toString();
  let numLen = numStr.length;

  if (numLen < 6) {
    return numStr;
  } else if (numLen >= 6 && numLen <= 8) {
    let decimal = numStr.substring(numLen - 4, numLen - 4 + point);
    let res = parseInt(num / 10000) + '.' + decimal + '万';
    return res;
  } else if (numLen > 8) {
    let decimal = numStr.substring(numLen - 8, numLen - 8 + point);
    let res = parseInt(num / 100000000) + '.' + decimal + '亿';
    return res;
  }
}

console.log(numConversion(123456789)); // "1.23亿"

14. 常见的 XSS 转义场景

转义 HTML 特殊字符
function HtmlEncode(str) {
    var hex = ['0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'];
    var preescape = str;
    var escaped = "";
    for(var i = 0; i < preescape.length; i++){
        var p = preescape.charAt(i);
        escaped += escapeCharx(p);
    }
    return escaped;
    
    function escapeCharx(original){
        var thechar = original.charCodeAt(0);
        switch(thechar) {
            case 10: return "<br/>"; // newline
            case 32: return "&nbsp;"; // space
            case 34: return "&quot;"; // "
            case 38: return "&amp;"; // &
            case 39: return "&#x27;"; // '
            case 60: return "&lt;"; // <
            case 62: return "&gt;"; // >
            default:
                if(thechar > 127) {
                    return "&#x" + thechar.toString(16) + ";";
                }
                else{
                    return original;
                }
        }
    }
}

let str = '朱昆鹏<div>2707509@.qq.com</div>朱昆鹏';
console.log(HtmlEncode(str)); 
// 输出:朱昆鹏&lt;div&gt;2707509@.qq.com&lt;/div&gt;朱昆鹏

🌲 更多文章

【VScode】中文版ChatGPT编程工具-CodeMoss!教程+示例+快捷键
【VScode】VSCode中的智能编程利器,全面揭秘ChatMoss & ChatGPT中文版

💡 结尾

以上内容涵盖了常用的 JavaScript 方法与技巧,希望对大家在日常开发中有所帮助。掌握这些方法不仅能提高开发效率,还能帮助您更好地解决实际问题。💻

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2234791.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

关于路由笔记

路由 定义&#xff1a; 在计算机网络中&#xff0c;路由是将数据包从源节点传输到目标节点的过程。这个过程涉及到网络中的多个设备&#xff0c;如路由器、交换机等&#xff0c;其中路由器起着关键的决策作用。 工作原理示例&#xff1a; 假设你在一个公司的局域网内&#…

25.停车场管理系统(基于web的Java项目)

目录 1.系统的受众说明 2.相关技术与方法 3.系统分析 3.1 可行性分析 3.1.1 技术可行性 3.1.2 经济可行性 3.1.3 操作可行性 3.2 需求分析 3.2.1 系统功能描述 3.2.2 用例图分析 4. 系统设计 4.1 系统类分析 5. 系统详细设计与实现 5.1 用户登录 5.2 系统信…

【含开题报告+文档+源码】基于SpringBoot+Vue智能居民健康检测系统设计与实现

开题报告 随着社会发展和人民生活水平的提高&#xff0c;人们对健康生活的要求越来越高。而广大居民由于条件限制&#xff0c;存在着健康管理服务不足的问题。本文基于JavaWeb技术&#xff0c;设计并实现了一种居民健康检测系统。首先&#xff0c;本文对该平台的需求进行了分析…

SCNU习题 总结与复习

1. P1:构建最大二叉树 【分治】 重点 构树函数需要注意的点&#xff1b; 前序遍历需要注意&#xff0c;本题的输出有点特点。若一个结点无左子&#xff0c;无右子就不再下去遍历&#xff1b; 其他情况都要下去遍历&#xff1b; 2. P2 寻找多数【分治】 没啥&#xff0c;注意…

ssm060基于SSM的高校共享单车管理系统的设计与实现+vue(论文+源码)_kaic

设计题目&#xff1a;高校共享单车管理系统的设计与实现 摘 要 网络技术和计算机技术发展至今&#xff0c;已经拥有了深厚的理论基础&#xff0c;并在现实中进行了充分运用&#xff0c;尤其是基于计算机运行的软件更是受到各界的关注。加上现在人们已经步入信息时代&#xff0…

【算法】(Python)贪心算法

贪心算法&#xff1a; 又称贪婪算法&#xff0c;greedy algorithm。贪心地追求局部最优解&#xff0c;即每一步当前状态下最优选择。试图通过各局部最优解达到最终全局最优解。但不从整体最优上考虑&#xff0c;不一定全局最优解。步骤&#xff1a;从初始状态拆分成一步一步的…

记一次微信云托管搭建Redis服务

背景 最近在做一个微信小程序&#xff0c;规划服务全部部署在云托管上面&#xff0c;本次使用了对象存储、mysql、java服务、Redis服务&#xff08;pc端用的&#xff09;。 由于对部署Redis不理解&#xff0c;查看了官方文档&#xff0c;首先看到的是这个架构图&#xff0c;看…

基于SSM的校园美食交流系统【附源码】

基于SSM的校园美食交流系统 效果如下&#xff1a; 管理员主页面 用户主页面 美食信息页面 美食资讯页面 修改密码页面 论坛中心页面 研究背景 随着高校信息化建设的不断推进&#xff0c;校园生活日益丰富多样&#xff0c;学生对于美食的需求与探索也愈发旺盛。然而&#xff…

Linux—进程学习-01

目录 Linux—进程学习—11.冯诺依曼体系结构2.操作系统2.1操作系统的概念2.2操作系统的目的2.3如何理解管理2.4计算机软硬件体系的理解2.5系统调用和库函数的概念 3.进程3.1进程是什么3.2管理进程3.2.1描述进程-PCB3.2.2组织进程3.2.3总结 3.3查看进程 4.与进程有关的系统调用 …

【电子通识】白皮书、应用手册、用户指南、快速入门指南一般的定义是什么?

一般大厂家的器件或模块,除了给数据表以外,还提供应用手册、技术说明、白皮书等各种文档资料。 如下图所示为ST25 NFC/RFID标签和读卡器的文件资料:其中就有技术说明、白皮书、应用手册等。 如下所示为TI INA228技术文档相关资料: 也有应用手册、用户指南、技术文章…

python opencv灰度变换

灰度变换 灰度变换和二值化的区别&#xff1a; 灰度变换是调整调整图像的灰度动态范围或图像对比度二值化是将图像的每个像素点调至0或255&#xff0c;只呈现白色或黑色 1.灰度化处理 图片的灰度化&#xff1a;将一个像素点的三个颜色变量相等&#xff0c;RGB&#xff0c;此…

toolkit二次开发学习之程序集(ProAsmcomp)和装配体组件路径对象(ProAsmcomppath)

程序集ProAsmcomp可以理解为装配体组件对象。 对象ProAssembly是ProSolid的一个实例&#xff0c;并共享相同的声明。因此&#xff0c;ProAssembly对象可以作为适用于装配体的任何ProSolid和ProMdl函数的输入。特别是&#xff0c;因为你可以使用函数ProSolidFeatVisit()来遍历特…

WPF中如何简单的使用CommunityToolkit.Mvvm创建一个项目并进行 增删改查

目录 开始前准备的数据库dbblog如下&#xff1a; 第一步&#xff1a;创建项目后下载四个NuGet程序包 第二步&#xff1a;删除原本的MainWindow.XAML文件 并创建如下的目录结构 然后在View文件夹下面创建Login.XAML和Main.XAML 并且在App.XAML中将启动项改为Login.X…

【51蛋骗鸡一共八个灯 按顺序依次12。34。56。78。两个灯同时亮灭的代码】2022-1-19

缘由proteus流水灯-嵌入式-CSDN问答 仿真51单片机流水灯代码-编程语言-CSDN问答 protues仿真单片机控制led流水灯-嵌入式-CSDN问答 #include<reg52.h>//头文件 void main() //主函数 {unsigned char y23;unsigned int ys0;while(1){if(!ys){P0y2;if(!(y2*4))y23…

数据结构:跳表实现(C++)

个人主页 &#xff1a; 个人主页 个人专栏 &#xff1a; 《数据结构》 《C语言》《C》《Linux》《网络》 《redis学习笔记》 文章目录 前言跳表跳表的优化思路skiplist&#xff0c;平衡搜索树&#xff0c;哈希表的对比 实现思路SkiplistNodesearch 搜索add 增加earse 删除 整体…

ssm基于Web的汽车客运订票系统的设计与实现+vue

系统包含&#xff1a;源码论文 所用技术&#xff1a;SpringBootVueSSMMybatisMysql 免费提供给大家参考或者学习&#xff0c;获取源码看文章最下面 需要定制看文章最下面 目 录 目 录 I 摘 要 III ABSTRACT IV 1 绪论 1 1.1 课题背景 1 1.2 研究现状 1 1.3 研究内容…

SSM中maven

一&#xff1a;maven的分模块开发 maven分模块就是在多人操作一个项目时将maven模块导入依赖&#xff0c;注意仓库里面没有资源坐标&#xff0c;需要使用install操作下载。 二&#xff1a;maven的依赖管理 pom文件中直接写的依赖叫做直接依赖&#xff0c;直接依赖中用到的依…

如何找到养生生活视频素材?推荐几个优秀网站

今天&#xff0c;我们来聊一个实用的话题&#xff0c;那就是如何找到优质的养生视频素材。作为自媒体创作者&#xff0c;高质量的视频素材对内容制作至关重要。不论你是刚入行的新手&#xff0c;还是已经积累了一定粉丝的大V&#xff0c;找到合适的养生视频素材都能帮助你更好地…

vscode的一些使用心得

问题1&#xff1a;/home目录空间有限 连接wsl或者remote的时候&#xff0c;会在另一端下载一个.vscode-server&#xff0c;vscode的插件都会安装进去&#xff0c;导致空间增加很多&#xff0c;可以选择更换这个文件的位置 参考&#xff1a;https://blog.csdn.net/weixin_4389…

画动态爱心(Python-matplotlib)

介绍 氵而已 由于用的是 AI&#xff0c;注释得非常清楚&#xff0c;自己改改也可以用 代码 # -*- coding: utf-8 -*- # Environment PyCharm # File_name 尝试1 |User Pfolg # 2024/11/05 22:45 import numpy as np import matplotlib.pyplot as plt import matplot…