浅谈Nodejs中Set和Map的用法
本篇文章带大家了解一下Node中Set和Map的使用。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。
相关推荐:《nodejs 教程》
数据类型set
作用和数组类似,和数组不同的是:它不能存放重复的元素
应用场景:数组去重
eg01:基本使用
let set1 = new Set([10, 20, 30, 40, 10, 20, 30, 50]); console.log(set1); // Set(5) { 10, 20, 30, 40, 50 }
- eg02:数组去重
let arr = [10, 20, 30, 40, 10, 20, 30, 50]; let set = new Set(arr); console.log(set); // Set(5) { 10, 20, 30, 40, 50 } let arrNew = [...set]; console.log(arrNew); // [ 10, 20, 30, 40, 50 ]
- eg03:数组去重,把上面操作变成一句话
let arr = [10, 20, 30, 40, 10, 20, 30, 50]; let arrNew = [...new Set(arr)]; console.log(arrNew); // [ 10, 20, 30, 40, 50 ]
模板字符串
- es5
字符串没有格式,里面也不能写变量
- es6
模板字符串
let author = "波波"; let str = ` 静夜思 ${author} 床前明月光, 低下鞋两双, 举头望明月, 低头思阿香. `; console.log(str);
- eg01:
let name = "千里"; let age = 38; let score = 100; console.log(`我的名字是${name},我的年龄是${age},我的成绩是${score}`);
- eg02:
function test() { return "哈哈哈"; } console.log(`我是神雕大侠,我在笑:${test()}`); // 我是神雕大侠,我在笑
补充数组的方法
1、forEach()
遍历数组,把遍历出来的每一项交给回调函数.
没有返回值
let arr = [10, 20, 30, 40]; arr.forEach(function (item, index) { // item 就是遍历出来的每一项 // index就是遍历出来的每一项对应的索引 console.log(item, index); });
eg01:
let arr = [10, 20, 30, 50, 33, 22]; let max = -Infinity; arr.forEach((item, index) => { if (item > max) { max = item; } }); console.log(max); // 50
2、map()
遍历数组的,有返回值
let arr = [10, 20, 30, 40]; let arrNew = arr.map(function (item, index) { // item 就是遍历出来的每一项 // index就是遍历出来的每一项对应的索引 // console.log(item, index); return item * item; }); console.log(arrNew); // [ 100, 400, 900, 1600 ]
3、filter(); 过滤器
filter()方法会返回一个新的数组,新的数组中的元素是通过检查后符合条件的元素
eg01:
let arr = [10, 20, 11, 21, 30, 31, 34, 56, 67]; let arrNew = arr.filter(function (item, index) { // item 就是遍历出来的每一项 // index就是遍历出来的每一项对应的索引 // console.log(item, index); return item % 2 == 0; // 如果条件成立,会返回当前项,如果条件不成立,不会返回当前项 }); console.log(arrNew); // [ 10, 20, 30, 34, 56 ]
eg02:
let arr = [ { name: "波波", age: 38 }, { name: "千里", age: 18 }, { name: "哲锴", age: 28 }, { age: 45 }, ]; let arrNew = arr.filter((item, index) => { return item.name; }); console.log(arrNew);
补充对象解构赋值
let obj = { name: "波波", age: 38, gender: "男", score: 100, }; // 1. // let { name, age, gender, score } = obj; // console.log(name, age, gender, score); // 波波 38 男 100 // 2. obj2就相当于是obj对象里面除了name属性之前的属性们组成的一个对象 let { name, age, ...obj2 } = obj; console.log(obj2); // { gender: '男', score: 100 }
数组降维
1、
// 数组降维: 把二维数组降低地道一维数组 var arr = [ [10, 20], [30, 40, 50], [60, 70], ]; // 使用扩展运算符... var arrNew = []; // 遍历二维数组 arr.forEach((v) => { // console.log(v); arrNew.push(...v); }); console.log(arrNew); // [10, 20, 30, 40, 50, 60, 70]
2、
// 数组降维: 把二维数组降低地道一维数组 var arr = [10, 20, [30, 40, 50], 60, 70]; // 使用扩展运算符... var arrNew = []; // 遍历二维数组 arr.forEach((v) => { if (Array.isArray(v)) { arrNew.push(...v); } else { arrNew.push(v); } }); console.log(arrNew); // [10, 20, 30, 40, 50, 60, 70]
数组去重
数组去重:把数组中重复的项给去掉
- 一: 补充去重的方法1:排序后判断法
var arrNew = []; // 排序 arr.sort((a, b) => { return a - b; }); console.log(arr); // [10, 10, 20, 20, 30, 40, 50] // 判断 arr.forEach((v, i) => { if (v !== arr[i + 1]) { arrNew.push(v); } }); console.log(arrNew); // [ 10, 20, 30, 40, 50 ]
- 二:补充去去重的方法2:使用对象法
原理:是利用的对象的属性不能重名
对象的语法复习:
取值:
属性名不存在,取出的是undefined
属性名存在,取出的肯定是对应的属性值
赋值:
属性名不存在,就相当于是动态的添加属性
属性名存在,那就修改原来的属性值
var obj = {}; // 检测有没有重复的元素 var arrNew = []; // 去重后存放元素的数组 // 遍历要去重的数组 arr.forEach((v) => { // 判断 if (obj[v] == undefined) { arrNew.push(v); // 不存在就把当前这个v存起来 obj[v] = "值"; // 把当前这个元素作为obj对象的属性存进obj对象里 } }); console.log(arrNew); // [ 10, 20, 30, 40, 50 ]
数组升维
var arr = [ { type: "电子产品", name: "iPhone", price: 8888 }, { type: "家具", name: "桌子", price: 100 }, { type: "食品", name: "瓜子", price: 10 }, { type: "家具", name: "椅子", price: 380 }, { type: "电子产品", name: "小米手机", price: 1380 }, { type: "食品", name: "辣条", price: 5 }, { type: "食品", name: "咖啡", price: 50 }, ]; var obj = {}; var arrNew = []; arr.forEach((v) => { // console.log(v); if (obj[v.type] === undefined) { // 第一次出现这个产品类型 obj[v.type] = 1; // 把当前遍历出来的这个数据存进arrNew中 arrNew.push({ type: v.type, data: [v], }); } else { arrNew.forEach((v2, j) => { if (v.type === v2.type) { arrNew[j].data.push(v); } }); } }); console.log(arrNew);
输出结果如下:
更多编程相关知识,请访问:编程视频!!
以上是浅谈Nodejs中Set和Map的用法的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

Node.js和Tomcat的主要区别在于:运行时:Node.js基于JavaScript运行时,而Tomcat是Java Servlet容器。I/O模型:Node.js采用异步非阻塞模型,而Tomcat是同步阻塞的。并发处理:Node.js通过事件循环处理并发,而Tomcat使用线程池。应用场景:Node.js适用于实时、数据密集型和高并发应用程序,Tomcat适用于传统Java Web应用程序。

Node.js 是一种服务器端 JavaScript 运行时,而 Vue.js 是一个客户端 JavaScript 框架,用于创建交互式用户界面。Node.js 用于服务器端开发,如后端服务 API 开发和数据处理,而 Vue.js 用于客户端开发,如单页面应用程序和响应式用户界面。

要连接 MySQL 数据库,需要遵循以下步骤:安装 mysql2 驱动程序。使用 mysql2.createConnection() 创建连接对象,其中包含主机地址、端口、用户名、密码和数据库名称。使用 connection.query() 执行查询。最后使用 connection.end() 结束连接。

Node.js 安装目录中有两个与 npm 相关的文件:npm 和 npm.cmd,区别如下:扩展名不同:npm 是可执行文件,npm.cmd 是命令窗口快捷方式。Windows 用户:npm.cmd 可以在命令提示符下使用,npm 只能从命令行运行。兼容性:npm.cmd 特定于 Windows 系统,npm 跨平台可用。使用建议:Windows 用户使用 npm.cmd,其他操作系统使用 npm。

Node.js 中存在以下全局变量:全局对象:global核心模块:process、console、require运行时环境变量:__dirname、__filename、__line、__column常量:undefined、null、NaN、Infinity、-Infinity

Node.js 和 Java 的主要差异在于设计和特性:事件驱动与线程驱动:Node.js 基于事件驱动,Java 基于线程驱动。单线程与多线程:Node.js 使用单线程事件循环,Java 使用多线程架构。运行时环境:Node.js 在 V8 JavaScript 引擎上运行,而 Java 在 JVM 上运行。语法:Node.js 使用 JavaScript 语法,而 Java 使用 Java 语法。用途:Node.js 适用于 I/O 密集型任务,而 Java 适用于大型企业应用程序。
