常用函数
map:将调用的数组的每个元素传递给指定的函数,并返回一个数组。
reduce:按函数方法计算值。
filter:返回的数组元素是函数逻辑为真的一个子集。
find:返回与指定条件匹配的第一个元素,不再往后匹配。
findlndex:和find用法相同,不过不是返回第一个匹配的元素,而是返回该匹配元素的索引值。为 清晰可见,以下面的名字数组为例,而不是数字数组。
indexOf:和findldex用法相通,但它不以函数作为参数,它的参数是一个简单的值。适用于简单逻辑或不需要函数进行判定的情况。
push:这是一种将元素添加至数组末尾的相对简单的方法。它修改数组值,函数本身返回压入数组的值。
pop:删除数组的最后一个元素。同样,它改变了原数组。函数本身返回被删除元素的值。
shift:从数组头部删除一个元素。同样,它改变了原数组。函数本身返回被删除元素的值。
unshift:在数组头部添加一个或多个元素。同样,它改变了原数组。与其他很多方法不同的是,函数本身返回数组新的长度。
splice:通过删除或替换现有元素和/或添加新元素改变数组的值。此方法会改变原数组。
slice:返回从指定的起始位置到结束位置的浅拷贝数组。如果没有指定结束位置,则会返回到原数组的最后部分。重要的是,该方法不会改变原数组的值,而是返回对应的子集。
执行代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
const words =[
"apple",
"banane",
"apple",
"orange",
"banane",
"apple",
]
//map
const mapped=words.map(w =>{
return{
word:w,
count:1,
};
});
console.log(mapped);
//filter
const a = mapped.filter(o => o.word.startsWith("a"));
console.log("a",a);
//find
const b = mapped.find (o => o.word.startsWith("b"));
console.log("b",b);
//findIndex
const c = mapped.findIndex (o => o.word.startsWith("a"));
console.log("c",c);
//indexOf
const d =words.indexOf("banane");
console.log("d", d);
//push
const pu =words.push("grape");
console.log ("pu",pu);
console.log("pu",words);
//pop
const po =words.pop();
console.log("po",words);
console.log("po",po);
//shift
const s =words.shift();
console.log("s",words);
console.log("s",s);
//unshift
const u = words.unshift("apple");
console.log("u",words);
console.log("u",u);
//splice
words.splice(2,0,"grap");
console.log("splice",words);
//slice
const sliced = words.slice(2,4);
console.log("sliced",sliced);
console.log("sliced",words);
//reduce
const result =mapped.reduce((ac, current)=> {
if(ac.hasOwnProperty("word")){
ac[ac.word] = ac.count;
delete ac.word;
delete ac.count;
}
let count = ac[current.word];
if(count === undefined || count ==null)
count = 0;
ac[current.word] = count + current.count;
return ac;
});
console.log(result);
</script>
</body>
</html>
执行结果
sort:用于对数组的元素进行排序。默认情况下,sort() 方法按照字符串 Unicode 码点的顺序对数组的元素进行排序。这意味着数组中的每个元素都会被转换为字符串,然后按照字符串的 Unicode 码点进行排序。如果需要对数字数组进行排序,可以提供一个自定义的比较函数作为 sort() 方法的参数。比较函数应该接受两个参数,并返回一个负数、零或正数,以表示第一个参数应该排在第二个参数之前、相等或之后。
执行代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
const students=[
{name:"xiaomiang1",age:19},
{name:"xiaomiang2",age:15},
{name:"xiaomiang3",age:144},
{name:"xiaomiang4",age:22},
{name:"xiaomiang5",age:35},
{name:"xiaomiang6",age:74},
]
const sliced_students = students.slice(1,2);
console.log(students,sliced_students);
sliced_students[0].age = 100;
students.sort((x,y) => x.age - y.age);
console.log(students);
//正序
let arr = [1, 7, 3, -1, 5, 7, 2];
const sorter = (x, y) => x - y;
arr.sort(sorter);
console.log(arr);
// [-1, 1, 2, 3, 5, 7, 7]
//倒序
let arr1 = [1, 7, 3, -1, 5, 7, 2];
const sorter1 = (x, y) => -x - y;
arr.sort(sorter1);
console.log(arr);
</script>
</body>
</html>
执行结果
Http通讯协议
HTTP(Hypertext Transfer Protocol,超文本传输协议)是一种应用层协议,用于在客户端(如浏览器)和服务器之间传输超文本数据。它基于请求-响应模型,客户端发送请求,服务器处理并返回响应。HTTP是无状态协议,即每次请求和响应都是独立的,服务器不会记录请求的上下文信息。
HTTP协议的主要特点包括:
- 基于TCP协议:HTTP协议使用TCP作为底层传输协议,确保数据的可靠传输。
- 请求-响应模型:客户端发起请求,服务器处理并返回响应。请求和响应是独立的,不共享上下文信息。
- 无状态协议:服务器不会记录请求的上下文信息,这使得HTTP协议简单、灵活,但可能导致多次请求之间无法共享数据。
- 头部字段:HTTP请求和响应包含头部字段,用于携带附加信息,如内容类型、编码方式等。
- 持久连接:HTTP/1.1引入了持久连接,允许在单个TCP连接上进行多个请求和响应的交互,减少连接建立和关闭的开销。
HTTP协议的工作过程包括以下几个步骤:
- 建立TCP连接:客户端和服务器建立TCP连接,用于传输HTTP数据。
- 客户端发送请求(Request):客户端发送HTTP请求,包含请求方法(如: GET、POST)、URL和HTTP版本等信息。
- 服务器处理请求:服务器解析请求,进行相应的处理。
- 服务器返回响应(Response):服务器返回HTTP响应,包含状态码(如: 200 OK、404 Not Found)和响应内容。
- 客户端处理响应:客户端解析响应,展示给用户或进行后续处理。
HTTP协议广泛应用于网页浏览、文件下载、表单提交等场景。随着互联网的发展,HTTP协议也不断演进,如HTTP/1.1、HTTP/2等,以适应新的需求和挑站。
DNS
DNS(Domain Name System,域名系统)是一种用于将易于理解和记忆的域名转换为与之对应的IP地址的系统。它是互联网的基础组成部分,使得用户可以通过域名访问网站,而不需要记住复杂的IP地址。
DNS的工作原理如下:
- 域名解析:当用户输入一个域名(如www.example.com)时,浏览器会向DNS服务器发送一个查询请求,请求将域名解析为对应的IP地址。
- 递归查询:DNS服务器可以分为根DNS服务器、顶级域DNS服务器(如.com)和权威DNS服务器。当用户发起查询请求时,通常会先访问本地DNS服务器,如果本地DNS服务器不知道对应的IP地址,它会向上游的DNS服务器发起递归查询,直到找到对应的IP地址。
- 缓存机制:为了提高查询效率,DNS服务器会缓存查询结果。当一个DNS服务器收到查询请求时,它会先检查缓存中是否有对应的结果,如果有,则直接返回结果;如果没有,则进行递归查询,并将查询结果缓存起来,以便后续查询。
DNS的主要优点包括:
- 易于记忆和使用:域名比IP地址更易于记忆和使用,提高了用户体验。
- 灵活性:DNS允许将多个域名解析为同一个IP地址,或将一个域名解析为多个IP地址,方便进行负载均衡和故障切换。
可扩展性:DNS协议可以方便地添加新的记录类型和功能,以满足不断变化的需求。
DNS的主要缺点包括:
延迟:DNS查询需要时间,可能导致网页加载速度变慢。
安全性:DNS劫持和缓存投毒等攻击可能导致用户被引导至恶意网站。
为了解决DNS的延迟和安全性问题,研究人员和互联网公司正在开发新的技术,如DNS over HTTPS(DoH)和DNS over TLS(DoT),以提高DNS的安全性和性能。
练习
制作一个带有轮播图的新闻页面
执行代码
执行结果