Blogger Information
Blog 29
fans 1
comment 0
visits 14839
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
JS中的常用数组API和选项卡,轮播图的实现
风车
Original
540 people have browsed it

数组中的api

在一个数组中可以保存很多东西,包括字符串,函数,数值,布尔值,对象,甚至可以保存另一个数组形成嵌套等

  1. let arr = [
  2. 1,
  3. 2,
  4. 3,
  5. 'php',
  6. 'cn',
  7. true,
  8. false,
  9. { x: 1, y: 2 },
  10. [6, 7, 8],
  11. function () {
  12. alert('hello');
  13. },
  14. ];

可以通过 … 的方法将数组展开,同时可以将展开的值保存在一个数组中(可以将一个类数组展开保存在一个数组中,将类数组转换成真数组)

  1. let arr = [1, 2, 3];
  2. console.log(arr)
  3. console.log(...arr);
  4. console.log([...arr]);

Array,from():将一个类数组转换为真数组
这个也是可以将类数组转换为真数组,但是这个是直接调用数组中的api

  1. const objArr = {
  2. 0: 'red',
  3. 1: 'green',
  4. 2: 'blue',
  5. length: 3,
  6. };
  7. console.log(objArr);
  8. // objArr 是 对象, 转为真数组
  9. console.log(Array.from(objArr));

现在有一个数组arr,然后在下方调用对应的api对当前数组进行增删查改操作

  1. let arr = [];

arr.push 在尾部追加内容(括号中输入追加的值)

  1. arr.push(10);

arr.pop 在尾部删除内容

  1. arr.pop();

arr.unshift(); 头部追加内容(括号中输入追加的值)

  1. arr.unshift(10);

arr.shift(); 头部删除内容

  1. arr.shift();

队列方案
1.尾部追加头部删除

  1. arr.push(10, 20, 30);
  2. arr.shift();
  3. arr.shift();
  4. arr.shift();

2.头部追加尾部删除

  1. arr.unshift(10, 20, 30);
  2. arr.pop();
迭代方法,逐个取出数组成员并且逐个处理一遍

forEach((当前数组的值,当前数组的索引,当前正在处理的数组)=>{对应的方法})
forEach((item,index,arr)=>{…})

  1. let arr = [1, 2, 3, 4, 5];
  2. let res = arr.forEach((item, index, arr) => {
  3. console.log(index, item);
  4. console.log(arr);
  5. });

map():参数与功能与forEach基本一样,但返回一个经过处理的数组
注释:调用数组中的map属性,这个属性和forEach一样也会返回三个值,下面我们只调用第一个,就是数组的值,然后对这个数组的值进行处理,比如进行运算,将当前数组中的每个值*2 然后输出

  1. res = arr.map(item => {
  2. return item * 2;
  3. });
  4. console.log(res);

every, some: 对当前数组进行判断, 返回 true / false
every: 所有成员必须全部满足条件,返回true,否则false

  1. console.log(
  2. arr.every(function (item) {
  3. return item >= 3;
  4. })
  5. )

可以用箭头函数进行简化

  1. console.log(arr.every(item => item >= 3));

some: 只要有一个成员的满足条件,就返回 true,否则false
这个和上面的区别就是every是只要有一个值满足就返回false 而some只要有一个值满足条件就返回true

  1. console.log(arr.some(item => item >= 3));

filter: 提取出满足条件的成员,组成的新数组

  1. console.log(arr.filter(item => item >= 3));
  2. 在后方加入健名,可以直接返回新数组中的对应值
  3. console.log(arr.filter(item => item >= 3)[0]);

上方的filter还有两个方法
find :可以返回新数组中的第一个满足条件的值
findIndex :返回新数组中某个值的健名(索引)

  1. console.log(arr.find(item => item >= 3));
  2. console.log(arr.findIndex(item => item >= 3));

reduce: 归并,index, arr是可选参数
语法:
arr.reduce(function (acc(返回结果的累加器), cur(当前值), index(当前值的索引), arr(当前正在处理的数组)) {}
注释:这个支持四个参数
第一个参数是运算结果,会返回参数中的进行运算的结果,然后会将这个结果返回到下一次运算中
第二个参数是当前正在遍历的值
第三个参数是当前当前值的索引
第四个参数是当前正在处理的数组

  1. res = arr.reduce(function (acc, cur, index, arr) {
  2. // console.log(acc, cur, index, arr);
  3. console.log(acc, cur);
  4. return acc + cur;
  5. }, 10);
  6. //上方的最后一个参数10 是他的起始值,运算的最开始的值

sort() 对数组中的成员进行排序(这个方法默认将数组中的内容视为字符串,所以在排序时要手写一个方法进行判断)

  1. let arr = [1, 10, 20, 6];
  2. console.log(arr);
  3. // sort()默认将数组成员当成字符串:['1', '10', '20', '6']
  4. console.log(arr.sort());
  5. 升序
  6. console.log(arr.sort((a, b) => a - b));
  7. 降序
  8. console.log(arr.sort((a, b) => b - a));

join: array -> string 将数组转为字符串表示

  1. console.log(arr.join());
  2. //括号中的* 为自定义分隔符
  3. console.log(arr.join('*'));

slice(,): 获取子元素 有两个参数 第一个参数是起始索引 第二个是结束索引

  1. //获取索引2-5的值(不包含5,因为这个方法获取的值不包含结束索引)
  2. //第二个值可以不写,不写的话就默认获取起始索引之后的所有值
  3. console.log(arr.slice(2, 5));

splice: 删除子元素

  1. // 1: 表示起始索引, 2: 表示删除的数量,返回被删除元素组成的数组
  2. console.log(arr.splice(1, 2));

update: 传入与删除数量相同的参数,来替换掉被删除的元素

  1. console.log(arr.splice(1, 2, 'a', 'b'));
  2. console.log(arr);

insert: 删除数量为0,就是新增操作,要传入新增的元素

  1. console.log(arr.splice(1, 0, 'a', 'b', 'c'));
  2. console.log(arr);

concat() 将两个或多个数组的值,传入并组成一个新数组

  1. let arr1 = [1,2];
  2. let arr2 = [3,4,5];
  3. let arr3 = [6,7];
  4. let myChildren = arr1.concat(arr2, arr3); // 将arr1、arr2 与 arr3 连接在一起

图片切换案例

  1. <div class="box">
  2. <div class="imgs">
  3. <a href=""><img src="imgs\1.jpg" alt="" class="show"></a>
  4. <div class="leftbtns" onclick="leftpage();"></div>
  5. <div class="rightbtns" onclick="rightpage()"></div>
  6. </div>
  7. <script src="js\lunbo.js"></script>
  8. // 获取当前页面中的图片和按钮
  9. const leftbtn=document.querySelector('.leftbtns');
  10. const rightbtn=document.querySelector('.rightbtns');
  11. const imgs=document.querySelectorAll('.imgs .show')[0];
  12. // 定义一个数组用来存储图片路径
  13. let img =[
  14. 'imgs/1.jpg',
  15. 'imgs/2.jpg',
  16. 'imgs/3.jpg',
  17. 'imgs/4.jpg',
  18. 'imgs/5.jpg',
  19. ];
  20. // 定义一个全局变量(存储返回值)
  21. // 这个变量就是用来存储if中返回的值,用来调取上方图片数组中的索引
  22. let i =0;
  23. // 左翻页
  24. leftpage =function(){
  25. i++;
  26. // 当i的值大于4(4就是当前图片数组的最大索引)
  27. // 当超过这个数 就让i返回0 形成循环
  28. if(i >4){
  29. i=0;
  30. }
  31. // 将上方i对应的地址索引,动态的加入到HTML页面的图片地址处
  32. imgs.src=img[i];
  33. }
  34. // 右翻页
  35. rightpage =function(){
  36. i--;
  37. if(i <0){
  38. i=4;
  39. }
  40. imgs.src=img[i];
  41. console.log(img[i]);
  42. }

Correcting teacher:PHPzPHPz

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