文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

JavaScript的编码技巧

2023-06-14 05:02

关注

小编给大家分享一下JavaScript的编码技巧,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

注意:下面的代码对比没有绝对的正确和错误,有些写法的使用场景会比较单一,根据大家的习惯和喜好判断即可,如果有更好或不同意见欢迎留言交流哦~

1. 短路操作:

当我们遇到这样的情况的时候,你会是

const res1 = item.a ? item.a : item.b // 看起来很是简洁const res2 = item.a ? item.b : item.a // 看起来很是简洁

还是利用js逻辑运算来实现呢?

const res1 = item.a || item.b;const res1 = item.a && item.b;

2. 通过条件判断给变量赋值布尔值的正确姿势:

当我们需要比较单一的值来获取结果的时候,利用直接的运算,要不if判断要简洁的多~

let res;if(a === '余光'){res = true }else{res = false;}// good?const res = a === '余光'

3. 在if中判断数组长度不为零的正确姿势:

场景:如果数组内存在元素,则进行操作:

// badif (arr.length !== 0) {    // todo}// goodif (arr.length) {    // todo}

以此类推,当我们需要判断数组的长度为为空时:

if(!arr.length){// todo}

4. 使用includes简化if判断:

场景:如果参数等于1、2、3、4,就进行下一步操作

写第一版代码:

if(a === 1 || a === 2 || a === 3 || a ===4){// todo}

看完感觉异常的头疼,遂修改为:

if([1,2,3,4].includes(a)){// todo}

5. 使用some判断是否存在符合条件的值:

场景:寻找是否存在价格小于n的商品

const itemList = [{name: '手机', price: 1000},{name: '手机壳', price: 10},{name: '帽子', price: 50},]function checkData(n){for(let i = 0; i < item.length; i++){if(item.price < n){return true;}}return false;}

方法写完了,但既然js为我们提供了那么多数组的方法,用起来:

const itemList = [{name: '手机', price: 1000},{name: '手机壳', price: 10},{name: '帽子', price: 50},]const checkData = (n) => itemList.some(item => item.price < n)

再次优化

const checkData = (n, itemList) => itemList.some(item => item.price < n)

6. 使用filter方法过滤原数组,形成新数组

情景:剔除某些不需要的元素,例如每一条数据的id是之后操作的必须数据,为了剔除缺陷数据,我们会这么做:

const data = [    { name: '手机', price: 1000, id: 1 },    { name: '手机壳', price: 10, id: 2 },    { name: '帽子', price: 50, id: '' },]// badlet newArr = []for (let i = 0; i < data.length; i ++) {    if (data.id) {        newArr.push(arr[i])    }}

掌握“过滤”思想,我们这样处理:

const afterData = data.filter(item => item.id);

7. 使用map对数组内的元素进行批量处理:

情景:在涉及到价格的交互中,我们拿到的价格字段通常是以分为单位的,我们要怎么做展示呢?

const data = [10000, 20000, 980000]const afterData = data.map(price => price / 100)

8. 解构数组进行变量值的替换

情景:需要将两个值进行交换

// badlet a = 1,    b = 2let temp = aa = bb = temp// goodlet a = 1,    b = 2[b, a] = [a, b]

9. 解构融到代码中:

情景:获取对象中的某个元素,并设置默认值

写第一版代码:

// badsetForm (person) {    this.name = person.name    this.age = person.age }// goodsetForm ({name = '余光', age}) {    this.name = name    this.age = age }

10. 多个方法合体时都能做什么?(举例一)

这是最后一条代码简洁思路,拿一个具体的场景距离,抛砖引玉,欢迎大家在评论区留言~

场景:

前端拿到的数据是

data = [    { id: 1, name: '一级标题-1' },    { id: 2, name: '一级标题-2' },    { id: 3, name: '二级标题-1', pid: 1 },    { id: 3, name: '一级标题-3' },    { id: 3, name: '二级标题-2', pid: 2 },]

我们需要形成及联关系,如:

needData = [    {        id: 1,        name: '一级标题-1',        children: [            { id: 3, name: '二级标题-1', pid: 1 }        ]    },    {        id: 2,        name: '一级标题-2',        children: [            { id: 5, name: '二级标题-2', pid: 2 }        ]    },    { id: 4, name: '一级标题-3' },]

于是我借助数组提供的多个api:

newList = data.reduce((result, item, _, arr) => {    if (!item.pid) {        return [...result, item];    }    const parentItem = arr.find(({ id }) => id === item.pid);    if (parentItem) {        const { children = [] } = parentItem;        parentItem.children = [...children, item];    }    return result;}, []);

思路:

  1. 寻找存在父级的元素

  2. 将它发到正确的位置上

  3. 返回所有没有父级字段(pid)的数据

如果大家有更多类似的思路和操作请一定要留言哦

看完了这篇文章,相信你对“JavaScript的编码技巧”有了一定的了解,如果想了解更多相关知识,欢迎关注编程网行业资讯频道,感谢各位的阅读!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯