JavaScript 有用的代码片段和 trick

网络营销 2025-04-24 14:01www.168986.cn短视频营销

这篇文章将带你领略JavaScript中一些实用至极的代码片段和独特技巧,它们如同一把锐利的瑞士军刀,为开发者提供丰富的功能。让我们一起来看看这些令人惊艳的工具。

浮点数处理之艺术:取整篇

在进行Web开发时,处理浮点数常常是一个挑战。下面是一些常见的取整方法,帮助你轻松应对。

设想我们有一个浮点数 `x` 等于 `123.4545`。

1. 使用位运算符 `>>` 进行右移操作,将浮点数转换为整数:`x >> 0`;结果是 `123`。

2. 使用一元取反运算符 `~~`,这也是一种简洁的取整方式:`~~x`;结果同样是 `123`。

3. 使用位或运算符 `|` ,可以将浮点数直接转换为整数:`x | 0`;结果仍然是 `123`。

4. 使用 Math 对象的 floor 方法:`Math.floor(x)`;结果也是 `123`。

值得注意的是,前三种方法仅适用于32位整数。在处理负数时,它们的行为与 Math.floor 有所不同。这些技巧虽然简洁,但务必留意其适用范围和边界情况。

这些方法背后隐藏着JavaScript的深层次特性,体现了这门语言的灵活性和强大功能。掌握这些技巧,无疑会提高你的开发效率和代码质量。如果你热衷于JavaScript的学习和实践,那么这篇文章将是你宝贵的参考指南。

Math.floor(-12.53); // 结果为 -13

-12.53 | 0; // 结果为 -12,使用位或运算符进行向下取整

生成6位数字验证码

// 方法一

'000000' + Math.floor(Math.random() 999999) + '').slice(-6);

// 方法二

Math.random().toString().slice(-6);

// 方法三

Math.random().toFixed(6).slice(-6);

// 方法四

'' + Math.floor(Math.random() 999999);

生成十六进制颜色代码

(function() {

return '' + ('00000' + (Math.random() 0x100000 << 0).toString(16)).slice(-6);})();

驼峰命名转下划线

'ponentMapModelRegistry'.match(/^[a-z][a-z0-9]+|[A-Z][a-z0-9]/g).join('_').toLowerCase(); // 结果为 ponent_map_model_registry,将驼峰命名转换为下划线分隔的命名格式。

URL查询参数转JSON格式

// ES6写法

const query = (search = '') => ((querystring = '') => (q => (querystring.split('&').forEach(item => (kv => kv[0] && (q[kv[0]] = kv[1]))(item.split('='))), q))({}))(search.split('?')[1]);

// 对应ES5实现

var query = function(search) { if (search === void 0) { search = ''; } return (function(querystring) { if (querystring === void 0) { querystring = ''; } return (function(q) { return (querystring.split('&').forEach(function(item) { return (function(kv) { return kv[0] && (q[kv[0]] = kv[1]); })(item.split('=')); }), q); })({}); })(search.split('?')[1]); }; query('?key1=value1&key2=value2'); // 结果为 {key1: "value1", key2: "value2"},将URL查询参数转换为JSON格式。

获取URL参数

function getQueryString(key){ var reg = new RegExp("(^|&)"+ key +"=([^&])(&|$)"); var r = window.location.search.substr(1).match(reg); if(r!=null){ return unescape(r[2]); } return null; } ,获取URL中的指定参数值。

n维数组展开成一维数组

var foo = [1, [2, 3], ['4', 5, ['6',7,[8]]]]; 可以通过以下方法将多维数组转换为一维数组:

// 方法一,利用JSON的字符串化和

JSON.parse(`[${JSON.stringify(foo).replace(/\[|]/g, '')}]`); // 结果为一维数组 [1, 2, 3, "4", 5, "6", 7, 8]。利用JSON的字符串化功能将数组转为字符串,再替换掉数组符号并回数组。

// 方法二,递归展开数组

function flatten(ary) { return ary.reduce((a, b) => a.concat(Array.isArray(b) ? flatten(b) : b), []); } flatten(foo); // 结果为一维数组 [1, 2, 3, "4", 5, "6", 7, 8]。递归遍历数组并连接所有元素。

// 方法三,利用ES6的解构赋值和扩展运算符 ...,但需要注意这种方法只适用于特定格式的数组,对于复杂的嵌套结构可能无法完全展开。

一、创建特定长度的非空数组

在JavaScript中,我们可以使用`Array.fill()`方法结合`Array.prototype`来创建一个具有特定长度的非空数组。例如,创建一个长度为5的数组,所有元素均为数字1:

```javascript

function createFilledArray(length, value) {

return new Array(length).fill(value);

}

var arr = createFilledArray(5, 1); // 输出:[1, 1, 1, 1, 1]

```

此方法可以快速生成具有特定长度的数组,并且所有元素的值都是相同的。

二、对象创建与属性赋值

对于对象的创建和属性赋值,我们可以使用简洁的语法来创建对象并为其分配属性:

```javascript

function createPerson(name, age) {

return { name, age }; // 使用简洁语法创建对象并分配属性

}

var person = createPerson('John Doe', 30); // 输出:{ name: 'John Doe', age: 30 }

```

这种写法简洁明了,易于理解。

三、格式化表单数据为查询字符串参数

对于表单数据的格式化,我们可以优化原有的`formatParam`函数以更简洁的方式实现同样的功能:

```javascript

function formatParams(obj) {

let query = '';

for (let key in obj) {

let value = obj[key];

if (Array.isArray(value)) {

value.forEach((item) => {

query += `${key}=${encodeURIComponent(item)}&`; // 对数组中的每个元素进行编码并添加到查询字符串中

});

} else if (typeof value === 'object' && value !== null) { // 递归处理嵌套对象

query += formatParams(value) + '&'; // 使用递归调用处理嵌套对象中的属性并添加到查询字符串中

想象一下我们手中有两个数组,一个是通过 `new Array(3)` 创建的,另一个则是直接定义了三个 `undefined` 值的数组。当对这两个数组执行map()方法时,结果截然不同。第一个数组 `[empty × 3]` 在map()中并不会返回任何有意义的值,而第二个数组 `[0, 1, 2]` 则会返回数组的索引值。

在大多数情况下,我们可能更希望创建一个包含undefined值但具有特定长度的数组。为了达到这个目的,可以采用一些技巧,比如利用狼蚁网站的SEO优化方法。通过 `Array.apply(null, { length: 3 })`,我们可以轻松地创建一个包含三个undefined元素的数组。使用这个数组执行map()方法时,会得到预期的结果:`[0, 1, 2]`。

在此,我想提醒大家尽量避免使用空单元数组。它们可能在某些情况下引发混淆或问题。

以上所述是长沙网络推广为大家带来的JavaScript实用代码片段和技巧分享,希望能对大家有所帮助。如果你有任何疑问或需要进一步的解释,请随时给我留言。长沙网络推广团队会及时回复大家的提问,并对大家的支持表示衷心的感谢。也感谢大家对狼蚁SEO网站的持续关注和支持!

现在,让我们用Cambrian的渲染方法展示这些内容吧:`cambrian.render('body')`。

上一篇:关于HTTP传输中gzip压缩的秘密探索分析 下一篇:没有了

Copyright © 2016-2025 www.168986.cn 狼蚁网络 版权所有 Power by