10个JavaScript One-Liners让初学者看起来很专业

原文链接:https://pinjarirehan.medium.com/10-javascript-one-liners-for-beginner-developers-to-look-pro-b9548353330a

原文作者:Rehan Pinjari

翻译:小圆


你是不是在辛苦码字时,看到别人轻松甩出一行 JavaScript 就搞定难题?那感觉就像变魔术一样!

这就是单行代码的力量。这些简短的代码片段可以非常有效,让你感觉自己像一个JavaScript 专家。

但是,在开始将多行代码简化成一行代码之前,我们先来分解一下。单行代码是指将复杂功能压缩到一行的简短 JavaScript 代码片段。它们可以帮助你编写更紧凑的代码,有时甚至也可以提升代码的可读性。说不定还能让其他程序员眼前一亮~

我们现在聚焦于实用且对初学者友好的“单行代码技巧”,它们将帮助你快速取得成果。

以下是一些可以添加到你的 JavaScript 工具箱中的不错选择:

Array Filtering

假设你有一个包含测试分数的数组,并且需要找到所有的A(在这个案例中,代表偶数)。一行代码就可以帮到你!

const scores = [85, 92, 73, 98, 80];
const evenScores = scores.filter(num => num % 2 === 0);

// evenScores 将是 [92, 98, 80]

这段代码使用filter方法来创建一个新数组,该数组仅包含通过测试的元素。

箭头函数(num => num % 2 === 0)用于检查每个数字是否为偶数。

何时使用: 从数组中过滤掉不需要的元素是一种常见的操作。这种一行代码的方式对于保持数据的清洁非常有价值。

Array Mapping

如果你有一个边长数组,并想计算每个正方形的面积。这行代码可以将数组中的每个元素映射(转换)为其平方:

const sideLengths = [5, 3, 7];
const areas = sideLengths.map(num => num * num);

// areas 将是 [25, 9, 49]

map方法会通过对原始数组中的每个元素调用提供的函数来创建一个新数组,该新数组包含调用函数的结果。在这里,函数是将每个数字平方计算出来。

何时使用: 这种单行代码对于在数组的每个元素上执行数学运算非常有用。

Flattening Arrays

有时你会遇到嵌套数组,比如一个商店产品列表,每个变量都有子项。单行代码可以帮助你展平这些结构:

const nestedGroceries = [
  ["Apples", ["Red", "Green"]],
  ["Milk", ["Whole", "2%"]]
];
const flatGroceries = nestedGroceries.flat(2); 

// flatGroceries 将是 ["Apples", "Red", "Green", "Milk", "Whole", "2%"]

flat方法(在ES6及更高版本中可用)会创建一个新数组,其中包含了所有子数组元素的连接。这可以简化你的数据操作任务。

何时使用: 展平嵌套数组可以更容易地在单一维度上处理数据。

Unique Elements(No Duplicates Allowed!)

如果你有一份嘉宾列表,但其中包含了一些重复条目。

单行代码可以帮助你确保每位嘉宾都收到唯一的邀请函(避免尴尬的“等等,我有两张?”的情况)。

// 具有重复条目的原始嘉宾列表
const guestList = ["Alice", "Bob", "Charlie", "Alice"];

// 通过将数组转换为Set再转换回数组来删除重复项
const uniqueGuestList = [...new Set(guestList)];

// 唯一的GuestList将是[“Alice”,“Bob”,“Charlie”]
console.log(uniqueGuestList);

这行代码利用了Set的方法。Set存储唯一值。

我们将原始列表中唯一嘉宾的Set元素展开(...)回一个新数组中。

何时使用: 数据清理通常意味着从数组中移除重复项。这行代码使你的数据保持干净和整洁。

Shorthand Conditionals

你是否曾经写过一个if...else语句跨多行,只是为了根据条件赋值?其实还有一种更简洁的方法:

// 定义用户的年龄
const age = 18;

// 根据用户的年龄确定信息
const message = age >= 18 ? "Welcome!" : "Sorry, not yet.";

// 输出信息
console.log(message);

这段代码使用了三元操作符,这是在单行中编写简短的if-else语句的巧妙方式。

会检查条件(age >= 18),并将对应的值(“Welcome!” 或 “Sorry, not yet.”)赋给message变量。

何时使用: 速记条件语句非常适合根据情况执行简单的赋值,同时保持代码的整洁和高效。

  • 可读性考虑:虽然三元运算符很方便,但复杂的情况可能会使代码难以理解。请谨慎使用!

String Reversal

单行代码也可以用于文本处理!比如,反转一个字符串,来看看它是否是回文(正读和反读都相同的单词,如“racecar”)?

const str = "Hello, world!";
const reversedStr = str.split('').reverse().join('');

// reversedStr will be "!dlrow ,olleH"

这行代码将字符串拆分成字符数组,反转数组元素的顺序,然后再将它们重新连接成一个新字符串——所有这些都在一行内完成!

何时使用: 像反转或提取子串这样的字符串处理任务可以通过单行代码简化。

  • 记住:对于复杂的字符串操作,为了可读性,可能更适合使用更长的代码。

Object Property Existence

如果想创建一个问候用户的操作,但在未提供姓名时提供一个备用值怎么办?一行代码就可以处理这个问题:

const user = { name: "Alice", age: 30 };

// 检查用户对象是否具有“email”属性
const hasEmail = "email" in user;

// hasEmail将为false,因为user对象中不存在“email”属性

这行代码使用了ES6的默认参数。在这里,如果在调用greet函数时没有提供name,就会使用默认值“Guest”。

何时使用:默认参数可以避免在函数调用时没有提供正确参数时发生的错误,从而使你的代码更健壮。

Default Parameter Values

如何创建一个操作来问候用户,但在没有提供名称的情况下给出一个备份值?单行代码可以管理这一点:

const greet = (name = "Guest") => `Hello, ${name}!`;
console.log(greet());

// 输出: Hello, Guest!

console.log(greet("Bob"));
// 输出: Hello, Bob!

这行代码使用ES6默认参数。这里,如果在调用greet函数时没有提供名称,则使用默认值“Guest”。

何时使用: 默认参数可以避免在没有正确参数的情况下调用函数时出错,从而使你的代码更易管理。

Compact Arrays

有时你可能会遇到包含空值或null元素的数组。单行代码可以帮助你解决:

const numbers = [1, 0, null, 3]; // 原始数组
const compactNumbers = numbers.filter(Boolean); // 使用带布尔值的过滤器作为回调函数

// compactNumbers将为【1,3】,因为Boolean(1)为true,布尔值(0)为false,布尔值(null)为false,并且布尔值(3)为true

这行代码再次使用了filter方法。不过,这次filter使用Boolean构造函数来检查“假值”(如nullundefined0、空字符串""NaN)。

任何计算结果为false的元素都将被排除在新数组之外。

何时使用:清理数组以移除不必要的元素可以确保你正在处理的是重要的数据。

Dynamic Obiect Keys

单行代码甚至可以用来构建操作后确定键的对象。

const prop = "score";
const person = { [prop]: 90 };

// person will be {score: 90}

这行代码使用了计算属性名。在创建对象时,prop变量的值被用作花括号内的键名。这里允许基于变量或表达式动态创建键。

何时使用:动态对象键对于创建结构未预设的对象很有用。

  • 记住:虽然这些用于动态键生成的高级一行代码令人印象深刻,但它们可能会影响可读性。请谨慎使用!

最后

希望这些单行代码技巧,可以帮助你提升你的 JavaScript 技能。

虽然,单行代码是不错的技巧,但也需要谨慎使用,以确保在实际应用中代码的清晰性和可维护性。

请持续关注后续内容,我们将更深入地探讨 JavaScript 概念

(如有侵权,请联系删除)

关于OpenTiny

在这里插入图片描述

OpenTiny 是一套企业级 Web 前端开发解决方案,提供跨端、跨框架、跨版本的 TinyVue 组件库,包含基于 Angular+TypeScript 的 TinyNG 组件库,拥有灵活扩展的低代码引擎 TinyEngine,具备主题配置系统TinyTheme / 中后台模板 TinyPro/ TinyCLI 命令行等丰富的效率提升工具,可帮助开发者高效开发 Web 应用。

欢迎加入 OpenTiny 开源社区。添加微信小助手:opentiny-official 一起参与交流前端技术~
OpenTiny 官网:https://opentiny.design/
OpenTiny 代码仓库:https://github.com/opentiny/
TinyVue 源码:https://github.com/opentiny/tiny-vue
TinyEngine 源码: https://github.com/opentiny/tiny-engine
欢迎进入代码仓库 Star🌟TinyEngine、TinyVue、TinyNG、TinyCLI~ 如果你也想要共建,可以进入代码仓库,找到 good first issue标签,一起参与开源贡献~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/790872.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ubuntu 上vscode +cmake的debug调试配置方法

在ubuntu配置pcl点云库以及opencv库的时候,需要在CMakeLists.txt中加入相应的代码。配置完成后,无法调试,与在windows上体验vs studio差别有点大。 找了好多调试debug配置方法,最终能用的有几种,但是有一种特别好用&a…

如何学习一门新技术,十年 MarkDown 程序员怎么做

案例源码仓库地址: https://github.com/Rodert/go-demo官方文档: https://etcd.io/视频教程: https://space.bilibili.com/404747369 文章目录 介绍使用场景 安装&搭建搭建 ETCD与 ETCD 交互集群 GoETCD 编码 介绍 谈使用场景之前&#…

C#知识|账号管理系统:UI层-添加账号窗体设计思路及流程。

哈喽,你好啊,我是雷工! 前边练习过详情页窗体的设计思路及流程: 《C#知识|上位机UI设计-详情窗体设计思路及流程(实例)》 本节练习添加账号窗体的UI设计,以下为学习笔记。 01 效果展示 02 添加窗体 在UI层添加Windows窗体,设置名称为:FrmAddAcount.cs 设置窗体属…

【算法入门-栈】逆波兰表达式求值

📖逆波兰表达式求值 ✅描述✅扩展:什么是逆波兰表达式✅题解方法一:栈✅题解方法二(数组模拟栈) 今天又刷了一道题,奥利给 刷题地址: 点击跳转 ✅描述 给定一个逆波兰表达式,求表达…

vue3+vite项目添加项目环境变量配置文件(.env),import.meta.env

.env: VITE_KEY 123获取环境变量: let env import.meta.env console.log(env, env) 人工智能学习网站 https://chat.xutongbao.top

RAG应用的典型工作流程

下面是RAG应用的典型工作流程: 具体步骤如下: 输入: 是指LLM系统需要回答的问题。如果不使用RAG,问题直接由LLM回答。 索引: 使用RAG时,会先将相关文档分块,为这些块生成嵌入向量,并…

期权交易必须弄懂的期权波动率是什么?

今天带你了解期权交易必须弄懂的期权波动率是什么?波动率是金融资产价格波动的度量,它衡量了资产的收益率的不确定性,常用于反映金融资产的风险水平。 期权波动率是衡量资产价格偏离平均值的程度,偏离程度越大,期权波…

3D云渲染工具对决:Maya与Blender的性能和功能深度比较

3D建模和动画制作已成为数字领域不可或缺的一环,无论是在影视特效的震撼场面,还是在游戏角色的生动表现,3D技术都扮演着至关重要的角色。而在这一领域,Maya和Blender这两款软件,以其强大的功能和广泛的应用&#xff0c…

[ACM独立出版]2024年虚拟现实、图像和信号处理国际学术会议(ICVISP 2024)

[ACM独立出版]2024年虚拟现实、图像和信号处理国际学术会议(ICVISP 2024) 2024 International Conference on Virtual Reality, Image and Signal Processing 最新消息ICVISP 2024-已通过ACM出版申请投稿免费参会,口头汇报或海报展示(可获得…

产品使用手册深度剖析:五步快速敲定产品手册策划思路

引言 在这个信息爆炸的时代,产品使用手册不仅是产品的“说明书”,更是品牌与用户之间建立情感连接的桥梁。一份优秀的手册,能够迅速吸引用户的注意力,引导他们轻松上手,并深入体验产品的魅力。那么,如何撰…

usbserver工程师手记(二)设置定时任务

概述 部分银行ukey 长时间不使用后会导致休眠,出现虽然有连接,但是读不到证书,可以用定时重置端口的办法,调用接口 http://ip/usb_server/reset_port,参数为 {"port":"B5-1-2","vid_pid":"09…

视频监控业务平台LntonCVS视频监控管理平台智慧机场视频监控应用方案

随着人们生活水平的提高,对机场的需求日益增加。随之而来的是民航新建、迁建和扩建项目的激增,这些项目需要配备先进的安防监控系统,以满足民航机场安全管理和运营业务的迅速发展需求。 智慧机场主要涉及两个主要场景:候机厅和停机…

智慧城市的建设乃民之福音,建议普及这一技术

**智慧城市的建设乃民之福音,建议普及这一技术** 智慧城市已成为城市现代化的关键。智慧城市的建设不仅提高了城市管理的效率,还为市民带来了诸多便利。因此,我们应当积极推广并普及智慧城市技术,让这一福祉惠及更多民众。 如需…

SAP EWM display message对话框长度限制

1.问题 使用标准方法/scwm/cl_rf_dynpro_srvc=>display_message显示消息文本,由于消息文本过长而被截取,影响显示效果 2.解决 通过调试跟踪当前标准方法,发现屏幕显示长度为40,最多显示4行,且iv_msg_text把每一行显示字段用空格拼接起来,故以下代码需要把显示消息…

C# + halcon 联合编程示例

C# halcon 联合编程示例 实现功能 1.加载图像 2.画直线,画圆,画矩形, 画椭圆 ROI,可以调整大小和位置 3.实现找边,找圆功能 效果 开发环境 Visual Studio 2022 .NET Framework 4.8 halcondotnet.dll 查看帮助文档 项目结构 DL…

MT3056 交换序列

思路&#xff1a; 与题目 MT3055 交换排列 类似 代码&#xff1a; #include <bits/stdc.h> using namespace std; const int N 1e4 10; int n, fa[N], b[N], d[N]; void init(int n) {for (int i 1; i < n; i)fa[i] i; } int find(int x) {return x fa[x] ?…

在Visutal Studio 2022中完成D3D12初始化

在Visutal Studio 2022中完成DirectX设备初始化 1 DirectX121.1 DirectX 简介1.2 DirectX SDK安装2 D3D12初始化2.1 创建Windwos桌面项目2.2 修改符合模式2.3 下载d3dx12.h文件2.4 创建一个异常类D3DException,定义抛出异常实例的宏ThrowIfFailed3 D3D12的初始化步骤3.1 初始化…

聊一聊中小企业如何开展持续交付

持续交付的定义&#xff1a; 持续交付&#xff08;Continuous Delivery&#xff0c;简称CD&#xff09;是一种软件工程实践&#xff0c;旨在让软件产品的产出过程在一个短周期内完成&#xff0c;以保证软件可以稳定、持续地保持在随时可以发布的状况。它的核心目标在于加快软件…

C++函数调用运算符、函数调用对象和包装器详细介绍与总结

函数调用运算符 A.What&#xff08;函数对象&#xff09; 如果类定义了函数调用运算符&#xff0c;则该类的对象称为函数对象 B.Which&#xff08;有哪些可调用函数对象&#xff09; 函数 函数指针 lambd函数对象 bind创建的对象 重载了函数调用符的类对象 C.函数对象lambda l…

NVIDIA良心给显卡免费升级,只为挨更多的骂

起猛了&#xff0c;还真的以为 NVIDIA 良心发现了。 众所周知&#xff0c;英伟达对于咱们普通游戏玩家向来不屑一顾。只因为游戏业务在 NVIDIA 收入中占比较少。 在最新的 40 系显卡 RTX 4070 Ti Super 显卡中&#xff0c;NVIDIA悄悄给它来了一次核心「升级」&#xff0c;将原…