JavaScript 前端开发实用技巧:数值处理与对象数组操作

作者:代码拾荒时间:2026-10-23 20:09:46浏览:182

本文整理了 JavaScript 前端开发中的常用技巧,涵盖数值格式化、取整、精确小数处理,以及数组的合并、去重、截断与克隆,还包括对象的深拷贝、合并及数据类型判断方法,帮助提升代码简洁性与执行效率。

数值处理技巧

格式化金钱数值


const ThousandNum = num => num.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
const money = ThousandNum(20190214);
// money => "20,190,214"

对于正数,可以使用位运算符(如 ~~、| 0、>> 0)代替 Math.floor() 进行取整;对于负数,则需使用 Math.ceil()。示例代码展示了如何对 1.69 进行取整,结果均为 1。


const num1 = ~~ 1.69;
const num2 = 1.69 | 0;
const num3 = 1.69 >> 0;
// num1 num2 num3 => 1 1 1

使用一元加号运算符(+)转换数据类型时,仅对 null、空字符串 ""、false 以及数值型字符串有效,其他类型可能返回 NaN。示例中 null、空字符串和 false 均转换为 0,字符串 "169" 转换为数字 169。


const num1 = +null;
const num2 = +"";
const num3 = +false;
const num4 = +"169";
// num1 num2 num3 num4 => 0 0 0 169

处理精确小数时,可通过 Math.round() 结合指数运算实现。例如,将 1.69 保留 1 位小数,结果为 1.7。


const RoundNum = (num, decimal) => Math.round(num * 10 ** decimal) / 10 ** decimal;
const num = RoundNum(1.69, 1);
// num => 1.7

获取数组中的最小值和最大值,可以使用展开运算符配合 Math.min() 和 Math.max()。示例中数组 [0, 1, 2] 的最小值为 0,最大值为 2。


const arr = [0, 1, 2];
const min = Math.min(...arr);
const max = Math.max(...arr);
// min max => 0 2

数组操作技巧

判断对象是否为空,需先确认数据类型为 object,再检查 Object.keys() 返回的数组长度是否为 0。


const obj = {};
const flag = DataType(obj, "object") && !Object.keys(obj).length;
// flag => true

判断数据类型时,建议使用 Object.prototype.toString.call() 方法,并通过正则替换提取类型名称,转换为小写后与目标类型比较。该方法能准确区分 string、number、boolean、array 和 object 等类型。


function DataType(tgt, type) {
 const dataType = Object.prototype.toString.call(tgt).replace(/\[object (\w+)\]/, "$1").toLowerCase();
 return type ? dataType === type : dataType;
}
DataType("liner"); // "string"
DataType(2020630); // "number"
DataType(true); // "boolean"
DataType([], "array"); // true
DataType({}, "array"); // false

克隆数组可使用展开运算符(...)快速实现浅拷贝。示例中数组 [0, 1, 2] 被克隆为新数组,内容保持一致。


const _arr = [0, 1, 2];
const arr = [..._arr];
// arr => [0, 1, 2]

合并两个数组时,可将两个数组通过展开运算符放入新数组中。示例中 [0, 1, 2] 与 [3, 4, 5] 合并为 [0, 1, 2, 3, 4, 5]。


const arr1 = [0, 1, 2];
const arr2 = [3, 4, 5];
const arr = [...arr1, ...arr2];
// arr => [0, 1, 2, 3, 4, 5];

数组去重可利用 Set 数据结构自动去重的特性,将数组转换为 Set 后再展开回数组。示例中 [0, 1, 1, null, null] 去重后为 [0, 1, null]。


const arr = [...new Set([0, 1, 1, null, null])];
// arr => [0, 1, null]

截断数组长度时,可直接修改数组的 length 属性,或使用展开运算符结合索引截取。示例展示了通过 Set 去重后的数组处理,实际截断操作通常直接调整 length 或使用 slice。


const arr = [...new Set([0, 1, 1, null, null])];
// arr => [0, 1, null]

对象与变量操作技巧

交换两个变量的值,可以使用解构赋值语法,如 [a, b] = [b, a],无需引入临时变量。示例中 a 和 b 的值互换,结果分别为 1 和 0。


let a = 0;
let b = 1;
[a, b] = [b, a];
// a b => 1 0

克隆对象可采用展开运算符或 JSON.parse(JSON.stringify()) 方法。展开运算符实现浅拷贝,JSON 方法可实现深拷贝。示例中对象 { a: 0, b: 1, c: 2 } 被成功克隆。


const _obj = { a: 0, b: 1, c: 2 }; // 以下方法任选一种(本人偏爱第一种,简单明了,与克隆数组几乎一样)
const obj = { ..._obj };
const obj = JSON.parse(JSON.stringify(_obj));
// obj => { a: 0, b: 1, c: 2 }

合并两个对象时,使用展开运算符可将后一个对象的属性覆盖前一个对象的同名属性。示例中 { a: 0, b: 1, c: 2 } 与 { c: 3, d: 4, e: 5 } 合并,c 的值被覆盖为 3,最终结果为 { a: 0, b: 1, c: 3, d: 4, e: 5 }。


const obj1 = { a: 0, b: 1, c: 2 };
const obj2 = { c: 3, d: 4, e: 5 };
const obj = { ...obj1, ...obj2 };
// obj => { a: 0, b: 1, c: 3, d: 4, e: 5 }

数值处理技巧

为何 obj 不是 {a:0,b:1,c:2,d:4,e:5} 而是上述结果,下方相同示例可作说明

数值处理技巧

本文介绍了 JavaScript 前端开发中数值运算与对象数组处理的实用技巧,更多相关内容请参考本站其他文章。

作者最新文章