首页 > 知识百科 > 正文

JavaScript 手写代码第四期原创

文章目录

1.为什么要手写代码?2.手写实现2.1 织物浅化2.1.1 织物浅化2.1.2 利用扩展方法和浅层方法some2.1.3 利用减少方法进行迭代2.1.4 利用toString 方法将织物浅化2.1.5 直接使用ES6 新增的平方法 2.1.6 JSON.Stringify 实现和正则表达式 2.2 实现交换变量的值(不使用中间变量temp)2.3 实现日期格式化函数(年月日)

1 。

我们在日常开发过程中,往往都是抽取来直接用的,从不思考代码的底层实现逻辑,但当我开始研究一些底层的东西的时候,才开始理解了JavaScript每种方法和函数的简单实现思路,我认为这可以很好的提高我们的代码水平和逻辑思维。

2.手写实现

2.1 浅谈浅析

简单来说,就是将多维读写转换为一维浅析浅析

2.1.1 浅浅浅浅浅浅的浅析浅析

2.1.1 浅浅浅浅的浅析浅析 h4>

具体思路见注释

 let arr < span class="a543-02b7-6004-145e token 运算符">= [1 , 2, [3 4] [5, [6, 7]]] 函数 (arr) { let 结果 = []; 对于 (let i = 0;< /span> i < arr.length; i< span class="9c3f-e420-1056-2a76 token 操作符">++) { < span class="2a76-63ef-a543-02b7 token comment">//判断阵列的要素为是否阵列 if (Array .isArray(arr[i])) { //如果为备份,就进行电位结果=结果concat< span class="2a76-63ef-a543-02b7 token punctuation">((arr[i]))< span class="b971-a178-fc21-cc91 token punctuation">; } 其他  { //如果不是内存,直接推送到内存里面 result.推送(arr[i]); } } 返回结果; }控制台.日志((arr)) ; // [1,2,3,4,5,6]

2.1.2 利用扩展攻击和吞吐量方法some

具体解决办法就是恢复吞吐量,只要没有完全拍平,就一直在进行浅层化操作

 let arr = [1 2 span> [3, 4] [ 5, [6, 7]]]; 函数n (arr) { //主要备份元素还是多维备份,就会一直为true,一直指向拍平操作 while (arr一些(( 项目) => 数组isArray(item))) { arr = []连接(... arr); console日志(arr) ; } 返回 arr; } 控制台日志 ((arr))< span class="e420-1056-2a76-63ef token punctuation">;

2.1.3 利用reduce方法进行迭代

 let arr = [1 2 < span class="b971-a178-fc21-cc91 token punctuation">[3  4] [5 [6< /span>, 7]] ]; 函数 (arr) { 返回 arr.减少((, cur) => { 返回 pre连接(数组isArray(cur) ? (cur) : cur); }, []); } 控制台日志((arr));

2.1.4利用toString方法将餐具擦拭

 let arr = [1, 2  [3, 4], [5 [ 6, 7] ]]; 函数 (arr) { 返回 arr toString()  分割(',').地图((项目) => < span class="bc5f-9c3f-e420-1056 token function">数字(项目)); } 控制台< span class="02b7-6004-145e-315c token function">日志( (arr));

2.1.5 可以直接使用 ES6 新增的扁平方法

将磁盘进行浅化处理,返回一个新的磁盘,对原数据没有影响

flat()默认 仅限“拉平”楼层,如果需要“拉平”楼层的多层设备,可以将flat()方法的参数写成一个整数,表示想要拉平的层数,默认为1

使用示例
使用Infinity(无穷大)拍平

 let arr = [1, 2 [3 4] [5, [6, 7]]] ; //一般计算我们要拍平几层,直接使用Infinity(无穷大)方法 < span class="315c-b971-a178-fc21 token comment">//有几层我便拍平几层 function flat(arr) { 返回 arr.(无穷大)< span class="6004-145e-315c-b971 token punctuation">; } console日志( (arr)); // [1, 2, 3, 4, 5, 6, 7]

2.1. 6 JSON.Stringify实现和正则表达式

 let arr = [1, 2, [3 , 4] [5 [ 6, 7]]]; 函数 (arr ) { //先价格 let str = JSON< span class="02b7-6004-145e-315c token punctuation">.字符串化(arr); // 将[和] 都替换为空字符串 str = str.替换(/(\ [|\])/g, ''); //然后再闪电加上[]就达到了一维库存 str = '[' + str + ']'; 返回 JSON.解析(str); } 控制台 span>日志((arr)); // [1, 2, 3, 4, 5, 6, 7]

2.2 实现交换指标的值(不使用中间变量temp)

成功实现

 一个= 3, b = 1; a = a + b; b = a -  b; a = a - b ; 控制台.日志(a); // 1 span> 控制台日志(b); // 3

2.3 实现日期重构函数(年月日)

 const dateFormat = 函数 (日期,格式< /span>) { = 日期getFullYear();//月份加一,从0开始 = 日期getMonth() + 1; =日期getDate(); // 则替换格式 = 格式.替换(/YYYY/,); 格式= 格式替换< /span>(/MM/); 格式 = 格式替换(/DD/,); 返回格式; }; 控制台日志(日期格式( 日期(), 'YYYY/MM/DD')); // 2023/6 /23 控制台日志(< span class="b971-a178-fc21-cc91 token function">日期格式( 日期(), < span class="1056-2a76-63ef-a543 token string">'YYYY年MM月DD日')); // 2023年6月23日

date对象我之前有详细讲完,大家可以看一下Date对象详解

< /tbody>

JavaScript 手写代码第四期原创由知识百科栏目发布,感谢您对的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“JavaScript 手写代码第四期原创

Copyright © 2012-2023 普诚元亨工作室 版权所有

*本站部分网页素材及相关资源来源互联网,如有侵权请速告知,我们将会在24小时内删除*

Z-BlogPHP 1.7.3 琼ICP备2022020219号

欢迎大家讨论学习,感谢大家支持