【DAY46】js的算法(1)
JS 中常用的数据结构有数组、对象、Map、Set、栈、队列、链表、树等。这里列出它们的表示方法和特点:
1.数组:使用方括号 []
表示,可以存储多个元素,可以通过下标进行访问。数组具有随机访问的特点,但插入和删除一个元素需要移动其他元素,因此效率较低。
const arr=[1,2,3,4,5]
2.对象:使用花括号 {}
表示,由多个键值对组成,每个键值对之间使用逗号 ,
分隔。对象具有基于 key 的访问特点,适用于存储和表示具有明确 key 值的数据。
const obj={name:'Tom',age:18,gender:'Male'}//对象
3.Map:是一种有序的键值对组合,键和值可以是任何类型。可以用Map()构造函数创建Map对象。
const mp=new Map([['name','Tom'],['age',18],['gender','Male']]);//map
4.Set :是一种无序的,唯一的值的集合,值可以是任意类型。可以使用Set()构造函数创建Set对象
const st=new Set([1,2,3,4,5]);//Set
5.栈:后进先出(LIFO)的数据结构。可以通过push()方法压入元素,pop()方法弹出栈顶元素
const stack=[];
stack.push(1);//压入1
stack.push(2);//压入2
const top=stack.pop();//弹出2
6.队列:先进先出(FIFO)的数据结构。可以通过push()方法入队,shift()方法出队。
const queue=[];
queue.push(1);//入队1
queue.push(2);//入队2
const front=queue.shift()//出队1
7.链表:由多个节点组成,每个节点包含一个值和一个指向下一节点的指针。链表没有固定的长度,可以动态增减。相比数组,链表的插入和删除操作效率更高
class Node{
constructor(val,next=null){
this.val=val;
this.next=next;
}
}
const list=new Node(1,new Node(2,new Node(3)));//链表
8.树:由多个节点组成,每个节点包含一个值和多个指向子树的指针。树的高度和宽度不固定,可以存储复杂的,分层的数据结构。
class TreeNode{
constructor(val,left=null,right=null){
this.val=val;
this.left=left;
this.right=right;
}
}
const tree=new TreeNode(1,new TreeNode(2),new TreeNode(3));//树
串:
const str = 'Hello, world!';
const upperStr = str.toUpperCase();
const subStr = str.substring(0, 5);
const arr = str.split(' ');
const newStr = str.replace('world', 'JavaScript');
var reverseString = function(s) {
var a=[]
for(let i=s.length-1;i>=0;i--)
{
a.push(s[i])
}
return a
};
Js语法(字符串)
//从起始位置删除一定长度的字符串
Value.substr(start,length)
//删除从起始位置到终点的所有字符串
Value.substring(start,end)
//将value1中的第一个value2改为value3
Value1.replace(value2,value3)
//将value1中的所有value2改为value3
Value1.replaceAll(value2,value3)
//在指定位置插入
Value.slice(position,insertValue.length,insertValue)
//从指定位置删除指定长度的字符串
Value.substr(start,delLength)
//将字符串转为数组:
Value.split(‘’)
//将数组转置(数组特有功能)
Value.reverse()
//将数组转为字符串:
Value.join(‘’)