博客列表 >常用数组函数、ajax请求与跨域

常用数组函数、ajax请求与跨域

咸鱼老爷
咸鱼老爷原创
2021年03月04日 14:55:17632浏览

数组函数

栈方法

  • 栈:后进先出
  • 队:先进先出
    它们是近允许在一端进行增删的数组;
  • 1、push() pop()在数组的尾部进行增删
    1. let arr = [];
    2. console.log(arr.push(1, 2, 3));
    3. console.log(arr);
    4. console.log(arr.pop());
    5. console.log(arr.pop());
    6. console.log(arr.pop());
  • 2、unshift(),shift() 在数组的头部进行增删
    1. console.log(arr.unshift(4, 5, 6));
    2. console.log(arr);
    3. console.log(arr.shift());
    4. console.log(arr.shift());
    5. console.log(arr.shift());

    push()+shift() 模拟队列:尾部进,
    1. console.log(arr);
    2. console.log(arr.push(1, 2, 3));
    3. console.log(arr);
    4. console.log(arr.shift());
    5. console.log(arr.shift());
    6. console.log(arr.shift());

    unshift()+pop() 模拟队列:头部近,尾部出
    1. console.log(arr.unshift(4, 5, 6));
    2. console.log(arr);
    3. console.log(arr.pop());
    4. console.log(arr.pop());
    5. console.log(arr.pop());
  • 3、join() 将数组转为字符串 与split()相反
    1. arr = ['电脑', '手机', '键盘'];
    2. let res = arr.join(',');
    3. console.log(res);
  • 4、concat()数组合并
    1. console.log([1, 2, 3].concat([5, 6], [4]));
  • 5、slice() 返回数组中的部分成员
    1. arr = [7, 8, 9, 10, 11, 12, 13];
    2. res = arr.slice(0);
    3. console.log(res);
    4. res[1] = 100;
    5. console.log(arr);
    6. console.log(res);
  • 6、splice(开始索引,删除的数量,插入的数据) 数组的增删改成,主要是删除元素;
    1. arrTmp = [1, 2, 3, 4, 5, 6];
    2. //删除 删除前2个
    3. resTmp = arrTmp.splice(2);
    4. console.log(resTmp);
    5. console.log(arrTmp);
    6. //更新
    7. arrTmp = [1, 2, 3, 4];
    8. resTmp = arrTmp.splice(1, 2, ...[88, 99]);
    9. console.log(resTmp);
    10. console.log(arrTmp);
    11. //新增
    12. arrTmp = [1, 2, 3, 4];
    13. //将第二个参数设置为0,就不会又元素被删除
    14. resTmp = arrTmp.splice(1, 0, ...[88, 99]);
    15. console.log(resTmp);
    16. console.log(arrTmp);
  • 7、排序 默认按照字母表顺序排列
    1. arr = ['p', 'b', 'a'];
    2. arr.sort();
    3. console.log(arr);
    4. //数字排序 自定义回调函数
    5. arr = [22, 33, 1, 9];
    6. arr.sort((a, b) => a - b);
    7. console.log(arr);
  • 8、遍历 forech 没有返回值 map有返回值
    1. arr = [1, 2, 3, 4, 5];
    2. arr.forEach(item => console.log(item));
    3. //map 对数组每个成员都调用回调函数进行处理并返回一个新数组
    4. res = arr.map(item => item + 1);
    5. console.log(res);
  • 9、过滤 filter()
    1. arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
    2. res = arr.filter(item => item % 2);
    3. console.log(res);
  • 10、归内 reduce(callback(prev,curr),初始值);
    1. //累加
    2. arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
    3. res = arr.reduce((prev, curr) => {
    4. console.log(prev, curr);
    5. return prev + curr;
    6. });
    7. console.log(res);

    JSON函数

  • 1、JSON.stringify(data,replacer,space);将js转为json json对象的属性必须添加双引号,字符串也必须加双引号|json其实是一个巨有特殊格式的字符串
    1. console.log(JSON.stringify({
    2. a: 1,
    3. b: 2,
    4. c: 3
    5. }));
    6. //对json格式字符串的特殊操作主要通过第二个参数:支出数组和函数
    7. console.log(JSON.stringify({
    8. a: 1,
    9. b: 2,
    10. c: 3
    11. }, ["a", "b"]));
    12. console.log(JSON.stringify({
    13. a: 1,
    14. b: 2,
    15. c: 3
    16. }, (k, v) => {
    17. if (v < 2) return undefined;
    18. return v;
    19. }));
    20. //第三个参数,用来格式化输出的json字符串
    21. console.log(JSON.stringify({
    22. a: 1,
    23. b: 2,
    24. c: 3
    25. }, (k, v) => {
    26. if (v < 2) return undefined;
    27. return v;
    28. }, 2));
    29. console.log(JSON.stringify({
    30. a: 1,
    31. b: 2,
    32. c: 3
    33. }, (k, v) => {
    34. if (v < 2) return undefined;
    35. return v;
    36. }, "***"));
  • 2、JSON.parse(str,reviver) 将json转为js对象

    1. let obj = JSON.parse(`{"b":2,"c":3}`);
    2. console.log(obj);
    3. //第二个参数可以对json的数据进行处理后再返回
    4. obj = JSON.parse(`{"b":2,"c":3}`, (k, v) => {
    5. if (k === '') return v;
    6. return v * 2
    7. })
    8. console.log(obj);

    Ajax请求

    XMLHttpRequest是浏览器对象不是js对象
    发送请求步骤
    创建xhr对象:const xhr=new XMLHttpRequest();
    配置xhr参数 xhr.open(type,url)
    处理xhr响应 xhr.onload(…)=>{…}
    发送xhr请求 xhr.send(…)
    xhr对象常用属性
    responseType 设置响应类型
    Response 响应正文
    xhr对象常用方法
    open(type,url) 配置请求参数
    send(data/null) 发送请求
    常用事件
    load() 请求成功
    error() 请求失败

    发起一个get请求

    1. const btn = document.querySelector('button');
    2. btn.onclick = () => {
    3. //创建xhr对象
    4. const xhr = new XMLHttpRequest();
    5. //配置xhr参数
    6. xhr.open('get', 'url');
    7. xhr.responseType = 'json';
    8. //处理xhr响应
    9. xhr.onload = () => {
    10. console.log(xhr.response);
    11. let user = `${xhr.response.name}(${xhr.response.email})`;
    12. document.querySelector('p').innerHTML = user;
    13. }
    14. xhr.onerror = () => console.log('Error');
    15. xhr.send();
    16. }

    发起一个post请求

    1. const form = document.querySelector('form');
    2. const btn = document.querySelector('button');
    3. const tips = document.querySelector('.tips');
    4. btn.onclick = (ev) => {
    5. ev.preventDefault();
    6. //创建xhr对象
    7. const xhr = new XMLHttpRequest();
    8. //配置xhr参数
    9. xhr.open('post', 'url');
    10. //处理xhr响应
    11. xhr.onload = () => tips.innerHTML = xhr.response;
    12. xhr.onerror = () => console.log('Error');
    13. //发送表单数据
    14. xhr.send(new FormData(form));
    15. }

    跨域请求

    cors:跨域资源资源 在服务器端开启跨域许可(‘Access-Control-Allow-Origin’:*)
    同源策略:为了请求的安全,浏览器禁止通过脚本发起一个跨域的请求:只允许通过脚本发起的同源的请求,同源指:协议相同,域名/主机名端口相同

    jsonp

    jsonp :json with padding (将json填充进来)
    jsonp只是将json数据包含在一个函数调用中
    jsonp:cllback({‘id’:1,’name’:’admin’})
    jsonp:包含而部分 回调函数+josn数组
    回调函数:请求按钮收到响应时回调的函数,可动态设置
    回调参数:作为参数传递函数的json数据;
    json巧妙的利用了scrip标签发起的请求不受跨域限制的特征
    将跨域请求的url作为script的src属性值,实现不需要服务器授权的跨域请求
    jsonp只能完成get请求

    1. function getUser(data) {
    2. console.log(data);
    3. let user = data.name + ":" + data.email;
    4. document.querySelector('p').innerHTML = user;
    5. }
    6. getUser({
    7. name: 'admin',
    8. email: 'admin@admin.conm'
    9. })
    10. //将json数据从服务器上获取
    11. //从前端将这个需要调用的函数名称告诉后端,让后端动态生成一个函数调用的语句并返回;
    12. //可以理解为前端写一个函数,后端返回该函数名和调用数据,以script的方式调用getUser({name: 'admin',email: 'admin@admin.conm'})
    13. const btn = document.querySelector('button');
    14. btn.onclick = () => {
    15. //动态生成一个允许跨域请求的html script标签
    16. let script = document.createElement('script');
    17. //将跨域请求的url添加到src属性中,将调用的函数名称告诉后端
    18. script.src = 'url?callback=getUser';
    19. //将script插入html中
    20. document.body.appendChild(script);
    21. }
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议