JavaScript 集合,JavaScript 字典
本文为大家带来一些关于javascript的知识,主要介绍JavaScript字典和set的详细解释,set是由一组无序且不重复的元素组成的。我们可以把集合看作一个特殊的数组,它是无序的,不重复的,也就是说我们不能通过下标来访问它,集合中不会有重复的元素。
【相关推荐:javascript视频教程,web前端】
字典
什么是字典
说到字典,首先想到的就是新华字典。其实和编程中的字典差不多。两者都有一个特点,就是一一对应(伊一对映),或者说映射。
字典通常以* *[键,值] * *对的形式存储。因为它们是以键-值对的形式存储的,所以通过键获取值更方便。
比如存储用户信息:
{
用户名:一碗周,
“年龄”:18岁
}
JavaScript中的字典
在JavaScript中,对象似乎具有字典的所有特征,但是在ES6中增加了一个新的Map来表示字典。这里的地图不是翻译成地图,而是地图。
示例代码如下:
//创建字典
const map=新地图()
//将信息存储在字典中
Map.set(用户名,一碗周)
map.set(年龄,18)
console . log(map)//map(2){ username =一碗周, age=18}
字典的应用
在学习链表的时候,我们做了一道算法题,是force按钮中数字20的问题。它的题目:有效的括号,大意是判断一个给定的字符串。
解题思路如下:
判断字符串的长度是否为偶数,如果不是偶数,直接返回false,因为括号都是成对出现的;创建新的堆栈;遍历字符串,如果遍历到每一项都留了括号,就压入堆栈;如果是右括号,就和栈顶比较;如果匹配,就退出栈;如果不匹配,则返回false。我们原来的解法:
/**
* @param {string} s
* @return {boolean}
*/
var isValid=函数{
if (s.length % 2!==0)返回false
常量堆栈=[]
for(设I=0;is.lengthi ) {
Const c=s[i] //记录当前项
if (c===( c===[ c==={) {
stack.push(c)
}否则{
Const t=stack[stack.length-1] //获取堆栈的顶部元素
如果(
(t===( c===))
(t===[ c===])
(t==={ c===} )
) {
stack.pop()
}否则{
返回false
}
}
}
//如果是0,表示所有匹配;如果还有剩下的,就说明不匹配。
返回stack.length===0
};上面的代码中,条件判断中的判断条件很长,我们可以用字典来优化这种写法。
实现代码如下:
/**
* @param {string} s
* @return {boolean}
*/
var isValid=函数{
//1.判断字符串的长度是否为偶数,如果不是则直接返回false,因为括号都是成对出现的;
if (s.length % 2!==0)返回false
常量堆栈=[]
Const map=new Map() //存储字典中所有括号的对应关系
map.set((,))
map.set([,])
map.set({ , } )
for(设I=0;is.lengthi ) {
Const c=s[i] //记录当前项
//判断是否有键,即左括号,如果有,则将左括号存储在堆栈中。
if (map.has(c)) {
stack.push(c)
}否则{
Const t=stack[stack.length-1] //获取堆栈的顶部元素
if(map . Get(t)==c){//获取最后一个左括号,判断是否与右括号匹配。
Stack.pop() //退出堆栈
}否则{
返回false
}
}
}
//如果是0,表示所有匹配;如果还有剩下的,就说明不匹配。
返回stack.length===0
};在这段代码中,我们优化了if语句中的判断条件。
集合
什么是集合
集合由一组无序且不重复的元素组成。我们可以把集合看作一个特殊的数组,它的特殊性是无序且不重复,也就是说我们不能通过下标来访问它,集合中不会有重复的元素;
JS中的集合
这个数据结构Set在JavaScript中提供,MDN中的描述如下:。
集合中的操作
在集合中主要有以下场景操作:
向集合中添加元素;删除集合中的元素;确定该元素是否在集合中;清空集合;求交集、并集、差集;除了最后一个Set对象,它为我们提供了相应的方法,示例代码如下:。
const arr=[1,2,3,2,3,4,5]
//使用set实现重复数据删除
const 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) //true
set.has(7) //false
//删除集合中的元素
set.delete(1) //[2,3,4,5,6]
//清空集合
Set.clear()
交集、并集、差集的封装
首先我们要知道什么是交、并、差集。
并集:对于给定的两个集合,返回一个包含两个集合交集:中所有元素的新集合。对于给定的两个集合,返回一个包含第一个集合中所有元素但不包含第二个集合中所有元素的新集合差集:。下图更好的解释了什么是交集和交集。
封装代码如下:
//找到两个集合的并集
导出函数联合(setA,setB) {
let _union=新集合(setA)
for (let elem of setB) {
_union.add(elem) //因为集合中没有重复的元素
}
返回_联合
}
//找到两个集合的交集
导出函数交集(setA,setB) {
let _intersection=新集合()
for (let elem of setB) {
if (setA.has(elem)) {
_intersection.add(elem)
}
}
返回_交叉点
}
//求两个集合的差集
导出功能差异(setA,setB) {
let _difference=新集合(setA)
for (let elem of setB) {
_difference.delete(元素)
}
返回_差异
}所有这三种封装方法都利用了集合不能重复的特性。
【相关推荐:javascript视频教程,web前端】以上是JavaScript字典和合集的详细内容(总结和分享)。更多请关注我们的其他相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。