博客列表 >JS学习小结(数组常用的10个方法、JSON函数、跨域资源共享)

JS学习小结(数组常用的10个方法、JSON函数、跨域资源共享)

庖丁
庖丁原创
2021年01月23日 17:25:35460浏览

数组常用的10个方法

  1. <script>
  2. //1、栈方法
  3. //栈 后进先出
  4. //栈 1、 后端进后端出 push() + pop()
  5. //栈 2、 头端进头端出 unshift() + shift()
  6. //队 先进先出
  7. //队 1、头端进尾端出 unshift() + pop()
  8. //队 2、头端出尾端进 shift() + push()
  9. let arr=[1,2,3];
  10. arr.push(4,5);
  11. console.log(arr);
  12. arr.pop();
  13. console.log(arr);
  14. arr.unshift(0);
  15. console.log(arr);
  16. arr.shift();
  17. console.log(arr);
  18. //2、join() 将数组元素通过分隔符拼装成字符串
  19. let arr2 =["我",'爱吃','苹果'];
  20. console.log(arr2.join(""));
  21. //3、concat() 数组合并
  22. let arr31 =[4,5,6];
  23. console.log(arr31.concat([7,8],9));
  24. //4、slice() 返回数组的部分成员
  25. let arr4 = [1,2,3,4,5];
  26. console.log(arr4.slice(2));
  27. //slice() 可用于复制数组
  28. let arr41 = arr4.slice(0);
  29. console.log(arr41);
  30. //5、splice() 用于数组的增删改,原始用途是删除元素,第一个参数是删除的其实索引号,第二个参数是删除的数量,第三个参数是插入的元素(可以插入多个值)
  31. let arr5 = [1,2,3,4,5,6];
  32. arr5.splice(1,0,...[11,111]);
  33. console.log(arr5);
  34. //6、sort() 排序,重点是整数排序
  35. let arr6 = [74,14,55,89];
  36. console.log(arr6.sort((a,b) => a - b));
  37. //7、map() 遍历,有返回值
  38. let arr7 = [1,2,3,4,5,6,789];
  39. console.log(arr7.map(item => item));
  40. //8、filter() 过滤
  41. let arr8 = [1,2,3,4,5,6,7];
  42. console.log(arr8.filter(item => item%2));
  43. //9、reduce() 接收一个函数作为累加器,第一个参数为回调函数,第二个参数为初始累加值
  44. let arr9 = [1,2,3,4,5];
  45. console.log(arr9.reduce((prev,curr)=> prev + curr));
  46. //10、length属性,可以得出数组的元素个数
  47. let arr10 = [1,2,3,4,5];
  48. console.log(arr10.length);
  49. </script>

JSON的两个常用函数

  1. <script>
  2. //JSON是一种数据交换格式,可以和各种编程语言进行数据交换。可以充当不同编程语言数据交换的中间角色。
  3. //1.JSON.stringify(),该函数可以将JS对象序列化为JSON字符串,该函数有三个参数,参数1为JS数据,参数2为数据处理方式,参数3为格式化输出的JSON字符串
  4. //1.1 第二个参数为数组,表示筛选条件,如下
  5. console.log(JSON.stringify({a:"苹果",b:"香蕉",c:"橘子"},["a","b"]));
  6. //1.2 如果第二个参数为函数,表示筛选条件,有两个参数,第一个表示键,第二个表示值
  7. console.log(JSON.stringify({a:1,b:2,c:3},(k,v)=>{
  8. if (v > 2) return undefined;
  9. return v;
  10. }));
  11. //1.3 第三个参数示例,如果写数字表示空格个数,也可以用字符串
  12. console.log(JSON.stringify({a:"苹果",b:"香蕉",c:"橘子"},null,4));
  13. console.log(JSON.stringify({a:"苹果",b:"香蕉",c:"橘子"},null,'---'));
  14. //2.JSON.parse(),可以将JSON字符串解析为JS对象,有两个参数,第一个参数是JSON字符串,第二个参数是数据过滤或数据处理
  15. console.log(JSON.parse('{"a":1,"b":2,"c":3}',(k,v)=>{
  16. if (k==="") return v;
  17. return v*2;
  18. }));
  19. </script>

cors 跨域资源共享

同源指的是协议相同,域名相同,端口号相同
跨域指的是不同源之间的请求与响应
在html中的示例代码为

  1. <button>跨域请求</button>
  2. <p></p>
  3. <script>
  4. //跨域请求需要在服务器端开启请求头许可,下面以get方式模拟(post方式同样可以)
  5. const btn = document.querySelector("button");
  6. btn.onclick =()=>{
  7. //创建异步对象
  8. const xhr = new XMLHttpRequest();
  9. xhr.open('get',"http://www.text.com/ceshi.php");
  10. xhr.onload = () => document.querySelector('p').innerHTML = xhr.response;
  11. xhr.send(null);
  12. };
  13. </script>

在对应的ceshi.php下示例代码为

  1. <?php
  2. header('Access-Control-Allow-Origin:http://www.123.com');
  3. echo '跨域成功';

jsonp

不用通过开启请求头许可,跨域请求响应的方法。
原理是标签的跨域是无法屏蔽的。将需要返回的数据以JSON数据格式作为参数封装在回调函数语句中,然后通过前端的script标签的src属性进行跨域请求,因为标签跨域的不可屏蔽性,后端无需开启请求头许可,就可将该回调函数语句返回到前端,进而调用回调函数,将数据输出到当前页面。
JSON-with-Padding只能完成get请求

前端html中示例代码如下

  1. <!DOCTYPE html>
  2. <html lang="utf-8">
  3. <head>
  4. <title>jsonp的原理</title>
  5. </head>
  6. <body>
  7. <button>jsonp</button>
  8. <p></p>
  9. <script>
  10. function getUser(data){
  11. console.log(data);
  12. let user = data.name + ": " + data.email;
  13. document.querySelector('p').innerHTML = user;
  14. }
  15. //getUser({"name":"张三","email":"admin@qq.com"});
  16. const btn= document.querySelector("button");
  17. btn.onclick = ()=> {
  18. let script = document.createElement("script");
  19. script.src = "http://www.test.com/1.php?haha=getUser";
  20. document.body.insertAdjacentElement("afterbegin",script)
  21. };
  22. </script>
  23. </body>
  24. </html>

后端php中示例代码如下

  1. <?php
  2. $haha = $_GET['haha'];
  3. $data ='{"name":"张三","email":"admin@admin.com"}';
  4. echo $haha . '(' .$data . ')';
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议