函数以及HTTP协议

常用函数

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协议的主要特点包括:

  1. 基于TCP协议:HTTP协议使用TCP作为底层传输协议,确保数据的可靠传输。
  2. 请求-响应模型:客户端发起请求,服务器处理并返回响应。请求和响应是独立的,不共享上下文信息。
  3. 无状态协议:服务器不会记录请求的上下文信息,这使得HTTP协议简单、灵活,但可能导致多次请求之间无法共享数据。
  4. 头部字段:HTTP请求和响应包含头部字段,用于携带附加信息,如内容类型、编码方式等。
  5. 持久连接:HTTP/1.1引入了持久连接,允许在单个TCP连接上进行多个请求和响应的交互,减少连接建立和关闭的开销。

HTTP协议的工作过程包括以下几个步骤:

  1. 建立TCP连接:客户端和服务器建立TCP连接,用于传输HTTP数据。
  2. 客户端发送请求(Request):客户端发送HTTP请求,包含请求方法(如: GET、POST)、URL和HTTP版本等信息。
  3. 服务器处理请求:服务器解析请求,进行相应的处理。
  4. 服务器返回响应(Response):服务器返回HTTP响应,包含状态码(如: 200 OK、404 Not Found)和响应内容。
  5. 客户端处理响应:客户端解析响应,展示给用户或进行后续处理。

HTTP协议广泛应用于网页浏览、文件下载、表单提交等场景。随着互联网的发展,HTTP协议也不断演进,如HTTP/1.1、HTTP/2等,以适应新的需求和挑站。

DNS

DNS(Domain Name System,域名系统)是一种用于将易于理解和记忆的域名转换为与之对应的IP地址的系统。它是互联网的基础组成部分,使得用户可以通过域名访问网站,而不需要记住复杂的IP地址。

DNS的工作原理如下:

  1. 域名解析:当用户输入一个域名(如www.example.com)时,浏览器会向DNS服务器发送一个查询请求,请求将域名解析为对应的IP地址。
  2. 递归查询:DNS服务器可以分为根DNS服务器、顶级域DNS服务器(如.com)和权威DNS服务器。当用户发起查询请求时,通常会先访问本地DNS服务器,如果本地DNS服务器不知道对应的IP地址,它会向上游的DNS服务器发起递归查询,直到找到对应的IP地址。
  3. 缓存机制:为了提高查询效率,DNS服务器会缓存查询结果。当一个DNS服务器收到查询请求时,它会先检查缓存中是否有对应的结果,如果有,则直接返回结果;如果没有,则进行递归查询,并将查询结果缓存起来,以便后续查询。

DNS的主要优点包括:

  1. 易于记忆和使用:域名比IP地址更易于记忆和使用,提高了用户体验。
  2. 灵活性:DNS允许将多个域名解析为同一个IP地址,或将一个域名解析为多个IP地址,方便进行负载均衡和故障切换。

可扩展性:DNS协议可以方便地添加新的记录类型和功能,以满足不断变化的需求。
DNS的主要缺点包括:

延迟:DNS查询需要时间,可能导致网页加载速度变慢。
安全性:DNS劫持和缓存投毒等攻击可能导致用户被引导至恶意网站。
为了解决DNS的延迟和安全性问题,研究人员和互联网公司正在开发新的技术,如DNS over HTTPS(DoH)和DNS over TLS(DoT),以提高DNS的安全性和性能。

练习

制作一个带有轮播图的新闻页面

执行代码

执行结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值