Blogger Information
Blog 45
fans 0
comment 0
visits 34498
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
常用数组函数、ajax请求与跨域
咸鱼老爷
Original
633 people have browsed it

数组函数

栈方法

  • 栈:后进先出
  • 队:先进先出
    它们是近允许在一端进行增删的数组;
  • 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. }
Correcting teacher:天蓬老师天蓬老师

Correction status:qualified

Teacher's comments:
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post