每天学习 10 个实用Javascript代码片段(六)

简介: 每天学习10个实用JavaScript代码片段,加深对 Javascript 语法的理解,积累代码优化经验,第六天来了,本文代码片段包括生成随机数、数字加密、四舍五入、文件扩展名、变量数字转换。如果觉得内容能够带来点帮助,可以查看专栏《碎片时间学习Javascript代码》其他内容,又或者有用到的需求片段,不妨在留言区留言。

每天学习10个实用JavaScript代码片段,加深对 Javascript 语法的理解,积累代码优化经验,第天来了,本文代码片段包括生成随机数、数字加密、四舍五入、文件扩展名、变量数字转换。如果觉得内容能够带来点帮助,可以查看专栏《碎片时间学习Javascript代码》其他内容,又或者有用到的需求片段,不妨在留言区留言。

1. Randoms

在下面的代码片段,将展示了两种生成随机数或从数组中获取随机元素的方法。

生成指定范围的随机数:

const getRandoms = (min, max) => {
    return Math.round(Math.random() * (max - min) + min);
};
console.log(getRandoms(10, 100));

随机获取数组中的一项元素:

const arrayCities = ["北京", "上海", "广州", "深圳", "天津", "重庆"];
const getRadmonItem = (array) =>
    array[Math.floor(Math.random() * array.length)];
console.log("随机城市:", getRadmonItem(arrayCities));

2. 数字加密

下面代码片段展示了使用数字作为密钥对数字进行加密解密操作,使用异或运算 XOR(^) 来实现,展示一个简单的加密解密过程。

function Encrypt(secretNumber) {
    const _secretNumber = secretNumber;
    const encrypted = (encryptNumber) => encryptNumber ^ _secretNumber;
    const decrypted = (encryptedContent) => encryptedContent ^ _secretNumber;
    return {
        encrypted,
        decrypted,
    };
}
const encryptHelper = new Encrypt(202108);
const encryptNumber = 20210901;
// 加密
const encrypted = encryptHelper.encrypted(encryptNumber);
console.log(encrypted); // 20410793
// 解密
const decrypted = encryptHelper.decrypted(encrypted);
console.log(decrypted); // 20210901

3. 设置必选参数

通常定义的一个函数的时候,对于可预期的参数可以使用默认值,而对于必要参数希望给出友好的提示,下面代码片段展示一个必填参数的定义:

const mandatory = (name) => {
    throw new Error(`调用错误,必须传递参数:${name}`);
};
const printTitle = (title = mandatory("标题")) => {
    console.log(`打印文章标题:${title}`);
};
printTitle("JavaScript"); // 打印文章标题:JavaScript
printTitle(); // Error: 调用错误,必须传递参数:标题

4. 动态创建函数

动态创建函数是一种基于字符串动态生成函数的动态机制,通常用于动态表单的规则验证中,第一个形参是用逗号分隔的实参列表,最后一个形参是函数体的逻辑代码:

const multiplyFn = new Function(
    "num1",
    "num2",
    "num3",
    "return num1*num2*num3"
);
console.log(multiplyFn(1, 2, 3)); // 6
// ES6
const multiply = new Function(
    "...numbers",
    "return numbers.reduce((acc,current) => acc * current, 1)"
);
console.log(multiply(1, 2, 3)); // 6

5. 清空数组

简单的数组清空方式是改变其 length  ,如下代码片段:

const arrayCities = ["北京", "上海", "广州", "深圳", "天津", "重庆"];
console.log(arrayCities); // [ '北京', '上海', '广州', '深圳', '天津', '重庆' ]
// 清空
arrayCities.length = 0;
console.log(arrayCities); // []

6. 四舍五入

小数点的处理,是数字常见的操作,主要涉及的方法是 toFixedMath ,下面代码片段展示常用的方法。

由于 JavaScript 精度原因导致小数点相加的时候与预期有偏差,下面代码片段展示了四舍五入常见的方法和小数相加的处理:

const pi = 3.14159265359;
console.log(pi.toFixed(3)); // 3.142
const sumFloat = 0.1 + 0.2;
console.log(sumFloat); // 0.30000000000000004
console.log(sumFloat.toFixed(1)); // 0.3

Math 方法中常见用于取整的包括:Math.round() 舍入到最接近的整数, Math.floor() 向下舍入, Math.ceil() 向上舍入。最接近数学意义上四舍五入的方法就只有 toFixed ,如下代码片段所示:

const pi = 3.14159265359;
console.log(pi.toFixed(0)); // 3
console.log(Math.floor(pi)); // 3
console.log(Math.ceil(pi)); // 4
console.log(Math.round(pi)); // 3
const num2 = 3.5;
console.log(num2.toFixed(0)); // 4
console.log(Math.floor(num2)); // 3
console.log(Math.ceil(num2)); // 4
console.log(Math.round(num2)); // 4

7. 数组项的对象解构

数组项的对象解构在解析 CSV 格式的数据非常实用,请看下面的代码片段:

const csvAddressDetail = "广东省,深圳市,南山区,科技园北区科技园大厦";
const arrayAddress = csvAddressDetail.split(",");
const { 0: province, 1: city, 2: district, 3: address } = arrayAddress;
console.log(province, city, district, address);  // 广东省 深圳市 南山区 科技园北区科技园大厦

当然还可以跳过一些索引,如下:

const arrayAddress = csvAddressDetail.split(",");
const { 1: city, 3: address } = arrayAddress;
console.log(city, address); // 深圳市 科技园北区科技园大厦

8. 变量数字转换

将值转换为数字,特别是将字符串转换为数字,是经常会用到的,有许多方法可以进行转换,这里展示一些常见的方式:

console.log(+"15"); // 15
console.log(+true); // 1
console.log(+false); // 0
console.log(+null); // 0
console.log(Number("15")); // 15
console.log(parseInt("15", 10)); // 15
console.log(parseFloat("15.42")); // 15.42

9. 获取文件扩展名

下面的代码片段展示了通过一个完整路径或者文件名称获取文件相应的扩展名称方法:

const arrayFiles = [
    "/attach/pics/logo.png",
    "logo.svg",
    "template.xlsx",
    "template.doc",
];
const getExtName = (fullpath) => {
    const root = fullpath.split(/[\\/]/).pop();
    const pos = root.lastIndexOf(".");
    return root === "" || pos < 1 ? "" : root.slice(pos + 1);
};
const arrayExtNames = arrayFiles.map((item) => getExtName(item));
console.log(arrayExtNames); // [ 'png', 'svg', 'xlsx', 'doc' ]

10. 普通函数定义

假设需要定义一个函数,给定一些参数和函数,然后使用这些参数执行这个函数,代码片段展示一个计算器的功能及扩展运算符的使用,如下代码:

const calculator = (operation, ...numbers) => {
    return operation(...numbers);
};
function add(...numbers) {
    return numbers.reduce((acc, num) => acc + num, 0);
}
function subtract(...numbers) {
    return numbers.reduce((acc, num) => acc - num, 0);
}
function multiply(...numbers) {
    return numbers.reduce((acc, num) => acc * num, 1);
}
console.log(calculator(add, 1, 2, 3, 4, 5)); // 15
console.log(calculator(subtract, 20, 12, 1)); // -33
console.log(calculator(multiply, 1, 2, 3, 4)); // 24
// 打印JSON数据的 title 属性
function printTitle({ title }) {
    console.log(title);
}
const article = {
    title: "JavaScript 函数定义",
    description: "函数定义方式",
};
printTitle(article); // JavaScript 函数定义


相关文章
|
28天前
|
JSON JavaScript 前端开发
JavaScript原生代码处理JSON的一些高频次方法合集
JavaScript原生代码处理JSON的一些高频次方法合集
|
2月前
|
存储 JavaScript 前端开发
非常实用的JavaScript一行代码(整理总结)
非常实用的JavaScript一行代码(整理总结)
32 0
|
6天前
|
JavaScript 前端开发 开发工具
【JavaScript 与 TypeScript 技术专栏】TypeScript 如何提升 JavaScript 代码的可读性与可维护性
【4月更文挑战第30天】TypeScript 提升 JavaScript 代码的可读性和可维护性,主要通过静态类型系统、增强代码组织、智能提示与错误检测、文档化和在大型项目中的优势。静态类型减少误解,类和接口提供结构,智能提示提高编码效率,类型注解充当内置文档。在大型项目中,TypeScript 降低理解差异,平滑迁移现有 JavaScript 项目,助力提高开发效率和项目质量。
|
7天前
|
存储 移动开发 JavaScript
学习javascript,前端知识精讲,助力你轻松掌握
学习javascript,前端知识精讲,助力你轻松掌握
|
13天前
|
JavaScript 前端开发 算法
< JavaScript小技巧:如何优雅的用【一行代码 】实现Js中的常用功能 >
在开发中,采用简洁的语法和结构,遵循一致的命名规范,具有良好的代码组织和注释,能很好的提高代码的质量。可读性:易于阅读和理解。清晰的命名、简洁的语法和良好的代码结构可以使代码的意图更加明确,降低理解代码的难度,提高代码的可读性。可维护性:易于维护。当代码逻辑清晰、结构简洁时,开发者可以更快速地定位和修复bug,进行功能扩展或修改。同时,可读性高的代码也有助于后续的代码重构和优化。可扩展性:更具有扩展性和灵活性。清晰的代码结构和简洁的代码风格使得添加新功能、修改现有功能或扩展代码更加容易。
< JavaScript小技巧:如何优雅的用【一行代码 】实现Js中的常用功能 >
|
13天前
|
JavaScript 前端开发 测试技术
学习JavaScript
【4月更文挑战第23天】学习JavaScript
13 1
|
13天前
|
前端开发 JavaScript 容器
JavaScript、CSS像素动画特效代码
此示例创建一个带有像素粒子的容器,每隔300毫秒就会动态添加一个新的像素粒子,然后通过CSS的关键帧动画(`@keyframes`)使它们产生上升和逐渐消失的动画效果。你可以根据需要修改像素粒子的颜色、大小、动画效果和创建速度。
13 0
|
19天前
|
JavaScript
js校验统一社会信用代码
js校验统一社会信用代码
24 0
|
21天前
|
JavaScript 前端开发 应用服务中间件
node.js之第一天学习
node.js之第一天学习
|
23天前
|
监控 前端开发 JavaScript
如何在浏览器中使用javaScript进行代码调试
【4月更文挑战第11天】在浏览器中调试JavaScript是前端开发的关键技能。使用开发者工具(可通过F12、右键检查或菜单栏访问),遵循以下步骤:1) 打开Sources标签页查看所有脚本;2) 设置断点在需要暂停的代码行;3) 刷新页面触发断点;4) 利用调试工具如Scopes、Watch、Call Stack等检查代码状态;5) 使用Console辅助调试;6) 利用其他工具如Network、Performance和Memory进行性能分析。确保使用最新工具,保持代码清晰,以提升调试效率。