文章详情

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

请输入下面的图形验证码

提交验证

短信预约提醒成功

JavaScript字典与集合怎么应用

2023-07-02 17:45

关注

本篇内容主要讲解“JavaScript字典与集合怎么应用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“JavaScript字典与集合怎么应用”吧!

字典

什么是字典

说到字典,第一时间想到的应该就是新华字典,实际上,这跟编程中的字典类似,两者都有一个特点,就是一一对应(yi yi dui ying),或者说是映射

字典通常以**【键,值】** 对的形成存储,因为是以键值对的形式存储,更方便通过key来获取value

比如存储用户信息:

{  'username': '一碗周',  'age': 18}

JavaScript中的字典

在JavaScript中,对象好像拥有字典的所有特点,但是在ES6中新增Map,用来表示字典,这里的map不是翻译成地图,而是映射。

示例代码如下:

// 创建一个字典const map = new Map()// 往字典中存储信息map.set('username', '一碗周')map.set('age', 18)console.log(map) // Map(2) { 'username' => '一碗周', 'age' => 18 }

字典的应用

在学习链表的时候我们做了一个算法题,是力扣中题号为20的一道题,它的题目:有效的括号,题目大意就是判断给定字符串中的括号是否匹配,匹配返回true,否则返回false

解题思路如下:

我们原来的解法:

var isValid = function(s) {    if (s.length % 2 !== 0) return false    const stack = []    for(let i = 0; i<s.length; i++) {        const c = s[i] // 记录当前项        if (c === '(' || c === '[' || c==='{') {            stack.push(c)        } else {            const t = stack[stack.length - 1] // 获取栈顶元素            if (                (t === '(' && c === ')') ||                (t === '[' && c === ']') ||                (t === '{' && c === '}')             ) {                stack.pop()            } else {                return false            }        }    }    // 如果为0表示全部匹配,有剩余则表示不匹配    return stack.length === 0};

在上面的代码中,条件判断中的判断条件非常的长,这时我们就可以利用字典来优化这个写法,

实现代码如下:

var isValid = function(s) {    // 1. 判断字符串的长度是否为偶数,不为偶数直接返回false,因为括号都是成对出现的;    if (s.length % 2 !== 0) return false    const stack = []    const map = new Map() // 将所有括号的对应关系存储在字典中    map.set('(', ')')    map.set('[', ']')    map.set('{', '}')    for(let i = 0; i<s.length; i++) {        const c = s[i] // 记录当前项        // 判断是否存在 key 也就是左括号,如果存储,将左括号存储在栈中        if (map.has(c)) {            stack.push(c)        } else {            const t = stack[stack.length - 1] // 获取栈顶元素            if (map.get(t) === c) { // 获取最后一个左括号,判断是否与右括号匹配                stack.pop() // 出栈            } else {                return false            }        }    }    // 如果为0表示全部匹配,有剩余则表示不匹配    return stack.length === 0};

在这个代码中,我们优化了if语句中的判断条件。

集合

什么是集合

集合是由一组无序且不重复的元素构成。我们可以将集合看成一种特殊的数组,它的特殊之处就是无序且不重复,这也就意味着我们不能通过下标的方式进行访问,而且集合中不会出现重复的元素;

JS中的集合

在JavaScript中提供了集合这个数据结构,即SetMDN中的描述如下:

Set对象是值的集合,你可以按照插入的顺序迭代它的元素。Set中的元素只会出现一次,即Set中的元素是唯一的。

集合中的操作

在集合中主要有以下场景操作:

除了最后一种Set对象就为我们提供了对应的方法,示例代码如下:

const arr = [1, 2, 3, 2, 3, 4, 5]// 利用set实现去重const set = new Set(arr) // [1, 2, 3, 4, 5]// 往集合中添加元素set.add(3) // [1, 2, 3, 4, 5] 添加失败,集合中不允许出现重复元素set.add(6) // [1, 2, 3, 4, 5, 6]// 判断元素是否在集合中set.has(2) // trueset.has(7) // false// 删除集合中的元素set.delete(1) // [2, 3, 4, 5, 6]// 清空集合set.clear()

交集、并集、差集的封装

首先我们需要了解一下什么交集、并集、差集。

下面这个图更好的解释了什么是交集、并集、差集。

JavaScript字典与集合怎么应用

封装代码如下:

// 求两个集合的并集export function union(setA, setB) {  let _union = new Set(setA)  for (let elem of setB) {    _union.add(elem) // 因为集合中不存在重复元素  }  return _union}// 求两个集合的交集export function intersection(setA, setB) {  let _intersection = new Set()  for (let elem of setB) {    if (setA.has(elem)) {      _intersection.add(elem)    }  }  return _intersection}// 求两个集合的差集export function difference(setA, setB) {  let _difference = new Set(setA)  for (let elem of setB) {    _difference.delete(elem)  }  return _difference}

封装的这三个方法全部利用了集合不能重复的特性。

到此,相信大家对“JavaScript字典与集合怎么应用”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

阅读原文内容投诉

免责声明:

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

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

软考中级精品资料免费领

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

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

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

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

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

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

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