当前位置: 首页 > news >正文

Emoji 表情还能这样玩?

7cf9b210b2e2b21f99fdb43c9c5e33d7.gif

「绘文字(日语:絵文字/えもじ emoji)」 是日本在无线通信中所使用的视觉情感符号,绘指图画,文字指的则是字符,可用来代表多种表情,如笑脸表示笑、蛋糕表示食物等。在平时的工作和生活中,我们也经常使用到 Emoji 表情。相信大家对以下这些 Emoji 表情都不会陌生:

2da6b5299d62a32f4498da76cbb3ff97.png

利用 Emoji 表情不仅可以增加聊天的乐趣性,而且还可以玩出一些 “花样”。比如在地址栏上实现 url 动画:

4e7486b576fe8e4b927376e32c5131aa.gif

在以上动图中,最下方 Tab 页显示的是 「音/视频播放器的播放进度条」。不仅如此,我们还可以利用 Emoji 表情实现图形动画:

4dcd5d296fccc01345cb18ed0839492d.gif

看完以上的动图,有没有觉得挺惊讶的 —— “Emoji 竟然还能这样玩”。

对于前端工程师来说,在日常工作中,我们经常要跟数组打交道。利用数组对象上提供的一些方法,我们可以方便地实现对数组进行各种操作。这里我们对 JavaScript 数组方法进行了简单的分类和汇总,具体如下图所示:

6fe03848421bd0a143df800061aa4759.png

上图中列出的大部分方法,相信你平时的工作中也会有用到。接下来,阿宝哥将使用 Emoji 来帮助大家更好地理解 JavaScript 数组常见的 「16」 个方法。

1. map 方法

map 方法用于创建一个新数组,其结果是该数组中的每个元素是调用一次提供的函数后的返回值。

const hungryMonkeys = ["🐒", "🦍", "🦧"];
const feededMonkeys = hungryMonkeys.map((m) => m + "🍌");
console.log(feededMonkeys);
// [ '🐒🍌', '🦍🍌', '🦧🍌' ]

方法使用文档:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/map

2. filter 方法

filter 方法会创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。

const guests = ["👩👨", "👩👩", "👨", "👩", "👨👨"];
const singles = guests.filter((g) => g.length / 2 === 1);
console.log(singles);
// [ '👨', '👩' ]

使用文档:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/filter

3. some 方法

some 方法用于测试数组中是不是至少有 1 个元素通过了被提供的函数测试。

const participants = ["🔇", "🔇", "🔊", "🔇", "🔊"];
const isLoud = (p) => p === "🔊";
const troubles = participants.some(isLoud);
console.log(troubles);
// true

使用文档:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/some

4. every 方法

every 方法用于检测数组所有元素是否都符合函数定义的条件。

const visitors = ["👨", "👽", "👨", "👨", "🤖"];
const isHuman = (e) => e === "👨";
const onlyHumans = visitors.every(isHuman);
console.log(onlyHumans); // false

使用文档:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/every

5. push 方法

push 方法用于向数组的末尾添加一个或多个元素,并返回新的长度。

const animals = ["🐂", "🐒", "🐔"];
animals.push("🐴", "🐑");
console.log(animals);
// [ '🐂', '🐒', '🐔', '🐴', '🐑' ]

使用文档:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/push

6. concat 方法

concat 方法用于合并两个或多个数组,返回一个新数组。

const dogs = ["🐶", "🐶"];
const cats = ["🐱", "🐱", "🐱"];
const pets = dogs.concat(cats);
console.log(pets);
// [ '🐶', '🐶', '🐱', '🐱', '🐱' ]

使用文档:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/concat

7. unshift 方法

unshift 方法用于向数组的开头添加一个或更多元素,并返回新的长度。

let train = ["🚃", "🚃", "🚃", "🚃"];
train.unshift("🚂");
console.log(train);
// [ '🚂', '🚃', '🚃', '🚃', '🚃' ]

使用文档:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/unshift

8. splice 方法

splice 方法通过删除或替换现有元素或者原地添加新的元素来修改数组,并以数组形式返回被修改的内容。

let weather = ["☁️", "🌧️", "☁️"];
weather.splice(1, 2, "☀️");
console.log(weather);
// [ '☁️', '☀️' ]

使用文档:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/splice

9. slice 方法

slice 方法返回一个从开始到结束(不包括结束)选择的数组的一部分浅拷贝到一个新数组对象。

const solutionsOfClassmates = ["📃", "📑", "📄", "📝"];
const myOwnSolutionReally = solutionsOfClassmates.slice(2, 3);
console.log(myOwnSolutionReally);
// [ '📄' ]

使用文档:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/slice

10. reverse 方法

reverse 方法将数组中元素的位置颠倒,并返回该数组。

let rabbitWins = ["🐇", "🦔"];
const hedgehogWins = rabbitWins.reverse();
console.log(hedgehogWins);
// [ '🦔', '🐇' ]

使用文档:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/reverse

11. sort 方法

sort 方法用于对数组元素进行排序,并返回这个数组。

const books = ["📕", "📗", "📕", "📒", "📗", "📒"];
books.sort();
console.log(books);
// [ '📒', '📒', '📕', '📕', '📗', '📗' ]

使用文档:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/sort

12. join 方法

join 方法用于把数组中的所有元素通过指定的分隔符进行分隔放入一个字符串,返回生成的字符串。

const devices = ["💻", "🖥️", "🖥️", "💻", "🖨️"];
const network = devices.join("〰️");
console.log(network);
// 💻〰️🖥️〰️🖥️〰️💻〰️🖨️

使用文档:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/join

13. includes 方法

includes 方法用来判断一个数组是否包含一个指定的值,根据情况,如果包含则返回 true,否则返回 false。

const food = ["🥦", "🥬", "🍅", "🥒", "🍩", "🥕"];
const caught = food.includes("🍩");
console.log(caught);
// true

使用文档:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/includes

14. flat 方法

flat 方法用于拍平嵌套数组对象。

const savings = ["💵", ["💵", "💵"], [[["💰"]]]];
const loot = savings.flat(3);
console.log(loot);
// [ '💵', '💵', '💵', '💰' ]

使用文档:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/flat

15. fill 方法

fill 方法用一个固定值填充一个数组中从起始索引到终止索引内的全部元素,不包括终止索引。

let seeds = ["🌱", "🌱", "🌱", "🌱", "🌱"];
seeds.fill("🌳", 1, 4);
console.log(seeds);
// [ '🌱', '🌳', '🌳', '🌳', '🌱' ]

使用文档:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/fill

16. from 方法

from 方法用于从一个类数组或可迭代对象创建一个新的浅拷贝的数组实例。

const wild = "🐻🐯🦁";
const tamed = Array.from(wild);
console.log(tamed);
// [ '🐻', '🐯', '🦁' ]

使用文档:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/from

看完以上这 16 个方法,是不是有点意犹未尽。最后阿宝哥再分享一张在 Promise 竟被他玩出了四十八种花样

28b26406c04ff41ee7e39f48a3fa5c3d.png

好的,关于 Emoji 的一些好玩、有趣、有用的东西,就介绍到这里。为了方便大家学习。

RECOMMEND

推荐阅读

《JavaScript权威指南 原书第7版》

 398068360aa3da4b38789e485e8ff0cd.png

“犀牛书”已经成为JavaScript程序员心中公认的权威指南。凭着完整的内容、细致的讲解以及海量针对性的示例而受到读者的一致好评,这本巨著主要讲述的内容涵盖JavaScript语言本身,以及Web浏览器所实现的JavaScriptAPI。初学者读完本书,将会对JS有全面的认识,快速掌握JS最核心的技术。而有经验的开发者读完本书,会让你对JS的理解有从量变到质变的深层次飞跃。

如今,全球畅销25年的JS犀牛书全新升级,新版涵盖了ES2020特性,同时删去了已过时的内容。值得珍藏。

更多前端好书请阅读:送你一份入门前端学习路线图

b924b93e9cde87bea85f4d150425945c.png

896fa5b9091906f547ebe46dd4b2c5bb.gif

debfb9283cfb0756754f10abc5ed3c25.png

扫码关注【华章计算机】视频号

每天来听华章哥讲书

b0be68506addd2255d1518695008d10c.gif

更多精彩回顾

书讯 | 10月书讯(下) |  小长假我读这些新书

书讯 | 10月书讯(上) |  小长假我读这些新书

资讯 | 什么是图数据库?图数据库实践与创新浅析

书单 | 你们要的Java学习路线图来了

干货 | 数字化转型的1个目标,3大领域,6大因素和9个环节

收藏 | 两本书助你构建智能计算系统知识树

上新 | 【新书速递】从技术小白到开发大牛,这本实验教程带你手把手全栈开发!

赠书 | 【第75期】《失控玩家》引发的思考:我们究竟离真正的人工智能有多远?

baab7c83d7def03254af0ce54ca1e509.gif

相关文章:

  • 计算机科班比其他专业有多少优势呢?
  • 【第76期】50条有趣的Python一行代码,建议收藏!
  • 关于微服务系统中数据一致性的总结
  • 手把手教你做用户画像:3种标签类型、8大系统模块
  • 【新书速递】流量运营教科书
  • 纪念 C语言之父 丹尼斯·里奇 逝世10周年:他发明了计算机世界的钢筋水泥!...
  • 索引为什么能提高查询性能....
  • 五位卷王 | 总结的十道 JVM 面试真题!(建议收藏)
  • 【新书速递】图解IT-用Python轻松设计控制系统
  • Java、Go、Rust大比拼,高并发时代谁能称雄?
  • 32岁清华女教授获2021达摩院青橙奖,曾研制世界首台咽拭子采样机器人
  • 【新书速递】程序员必会的40种算法
  • 终于有人把流量运营讲明白了
  • 复杂的世界 简单的规律 —— 2021年诺贝尔物理奖科学背景介绍及解读
  • 【新书速递】分布式事务开山之作,带你深入理解分布式事务
  • [deviceone开发]-do_Webview的基本示例
  • [Vue CLI 3] 配置解析之 css.extract
  • 0x05 Python数据分析,Anaconda八斩刀
  • Asm.js的简单介绍
  • ES6, React, Redux, Webpack写的一个爬 GitHub 的网页
  • Quartz实现数据同步 | 从0开始构建SpringCloud微服务(3)
  • quasar-framework cnodejs社区
  • Shadow DOM 内部构造及如何构建独立组件
  • unity如何实现一个固定宽度的orthagraphic相机
  • 从0实现一个tiny react(三)生命周期
  • 分享自己折腾多时的一套 vue 组件 --we-vue
  • 基于axios的vue插件,让http请求更简单
  • 每天一个设计模式之命令模式
  • 七牛云假注销小指南
  • 栈实现走出迷宫(C++)
  • FaaS 的简单实践
  • Unity3D - 异步加载游戏场景与异步加载游戏资源进度条 ...
  • ​【已解决】npm install​卡主不动的情况
  • ​【原创】基于SSM的酒店预约管理系统(酒店管理系统毕业设计)
  • ​html.parser --- 简单的 HTML 和 XHTML 解析器​
  • ​软考-高级-信息系统项目管理师教程 第四版【第14章-项目沟通管理-思维导图】​
  • ​一、什么是射频识别?二、射频识别系统组成及工作原理三、射频识别系统分类四、RFID与物联网​
  • (1)安装hadoop之虚拟机准备(配置IP与主机名)
  • (5)STL算法之复制
  • (delphi11最新学习资料) Object Pascal 学习笔记---第5章第5节(delphi中的指针)
  • (Ruby)Ubuntu12.04安装Rails环境
  • (二)fiber的基本认识
  • (强烈推荐)移动端音视频从零到上手(下)
  • (一)Spring Cloud 直击微服务作用、架构应用、hystrix降级
  • (一)使用Mybatis实现在student数据库中插入一个学生信息
  • (一)硬件制作--从零开始自制linux掌上电脑(F1C200S) <嵌入式项目>
  • .NET CORE 2.0发布后没有 VIEWS视图页面文件
  • .Net IE10 _doPostBack 未定义
  • .net 托管代码与非托管代码
  • .Net(C#)自定义WinForm控件之小结篇
  • .NET国产化改造探索(一)、VMware安装银河麒麟
  • .NET中使用Redis (二)
  • /etc/fstab和/etc/mtab的区别
  • @data注解_一枚 架构师 也不会用的Lombok注解,相见恨晚
  • @RequestBody详解:用于获取请求体中的Json格式参数