JS数组
数组
很多的数据的集合
定义:
var arr = [];//定义 var arr1 = [1,2,3];//定义并赋值
数组元素:数组里面的值
数组下标(索引)作用;指明元素在数组中的位置:从0开始;
例子:
arr[0]为取数组下标为0的第一个元素
数组长度:arr.length
数组方法:
join() //数组转字符串
例子:
var arr =[1,2,3,4]; console.log(arr.join("-")); //1-2-3
通过join()方法可以实现重复字符串,只需传入字符串以及重复的次数,就能返回重复后的字符串,函数如下:
function repeatString(str, n) { return new Array(n + 1).join(str); } console.log(repeatString("abc", 3)); // abcabcabc
push()和pop() //数组末尾的添加、删除
push(): 可以接收任意数量的参数,把它们逐个添加到数组末尾,并返回修改后数组的长度。
pop():数组末尾移除最后一项,减少数组的 length 值,然后返回移除的项。
例子:
var arr = ["Lily","lucy","Tom"]; var count = arr.push("Jack","Sean"); console.log(count); // 5 console.log(arr); // ["Lily", "lucy", "Tom", "Jack", "Sean"] var item = arr.pop(); console.log(item); // Sean console.log(arr); // ["Lily", "lucy", "Tom", "Jack"]
shift() 和 unshift()//第一个元素的添加上相互
shift():删除原数组第一项,并返回删除元素的值;如果数组为空则返回undefined 。
unshift:将参数添加到原数组开头,并返回数组的长度 。
这组方法和上面的push()和pop()方法正好对应,一个是操作数组的开头,一个是操作数组的结尾。
例子:
var arr = ["Lily","lucy","Tom"]; var count = arr.unshift("Jack","Sean"); console.log(count); // 5 console.log(arr); //["Jack", "Sean", "Lily", "lucy", "Tom"] var item = arr.shift(); console.log(item); // Jack console.log(arr); // ["Sean", "Lily", "lucy", "Tom"]
sort() //排序 1324=>1234
例子:
var arr1 = ["a", "d", "c", "b"]; console.log(arr1.sort()); // ["a", "b", "c", "d"] arr2 = [13, 24, 51, 3]; console.log(arr2.sort()); // [13, 24, 3, 51] console.log(arr2); // [13, 24, 3, 51](元数组被改变)
为了解决上述问题,sort()方法可以接收一个比较函数作为参数,以便我们指定哪个值位于哪个值的前面。比较函数接收两个参数,如果第一个参数应该位于第二个之前则返回一个负数,如果两个参数相等则返回 0,如果第一个参数应该位于第二个之后则返回一个正数。以下就是一个简单的比较函数:
function compare(value1, value2) { if (value1 < value2) { return -1; } else if (value1 > value2) { return 1; } else { return 0; } } arr2 = [13, 24, 51, 3]; console.log(arr2.sort(compare)); // [3, 13, 24, 51]
降序:
function compare(value1, value2) { if (value1 < value2) { return 1; } else if (value1 > value2) { return -1; } else { return 0; } } arr2 = [13, 24, 51, 3]; console.log(arr2.sort(compare)); // [51, 24, 13, 3]
reverse() //翻转 1234=>4321
例子:
var arr = [13, 24, 51, 3]; console.log(arr.reverse()); //[3, 51, 24, 13] console.log(arr); //[3, 51, 24, 13](原数组改变)
concat() //链接数组
例子:
var arr = [1,3,5,7]; var arrCopy = arr.concat(9,[11,13]); console.log(arrCopy); //[1, 3, 5, 7, 9, 11, 13] console.log(arr); // [1, 3, 5, 7](原数组未被修改)
slice() //删除指定位置的元素
例子:
var arr = [1,3,5,7,9,11]; var arrCopy = arr.slice(1); var arrCopy2 = arr.slice(1,4); var arrCopy3 = arr.slice(1,-2); var arrCopy4 = arr.slice(-4,-1); console.log(arr); //[1, 3, 5, 7, 9, 11](原数组没变) console.log(arrCopy); //[3, 5, 7, 9, 11] console.log(arrCopy2); //[3, 5, 7] console.log(arrCopy3); //[3, 5, 7] console.log(arrCopy4); //[5, 7, 9]
解释:
arrCopy只设置了一个参数,也就是起始下标为1,所以返回的数组为下标1(包括下标1)开始到数组最后。
arrCopy2设置了两个参数,返回起始下标(包括1)开始到终止下标(不包括4)的子数组。
arrCopy3设置了两个参数,终止下标为负数,当出现负数时,将负数加上数组长度的值(6)来替换该位置的数,因此就是从1开始到4(不包括)的子数组。
arrCopy4中两个参数都是负数,所以都加上数组长度6转换成正数,因此相当于slice(2,5)。
splice() //删除指定位置的元素
删除:可以删除任意数量的项,只需指定 2 个参数:要删除的第一项的位置和要删除的项数。例如, splice(0,2)会删除数组中的前两项。
var arr = [1,3,5,7,9,11]; var arrRemoved = arr.splice(0,2); console.log(arr); //[5, 7, 9, 11] console.log(arrRemoved); //[1, 3]
indexOf()和 lastIndexOf() //查找元素第一次出现的位置 返回下标 indexOf从第一个查 lastIndexOf从最后一个查
例子:
var arr = [1,3,5,7,7,5,3,1]; console.log(arr.indexOf(5)); //2 console.log(arr.lastIndexOf(5)); //5 console.log(arr.indexOf(5,2)); //2 console.log(arr.lastIndexOf(5,4)); //2 console.log(arr.indexOf("5")); //-1
数组遍历:
var arr = ['zhangsan','wangwu','zhaoliu']; for(var i =0;i<arr.length;++i){ arr[i] = arr[i] +123; }
//数组遍历 for(var i in arr){ arr[i]; }
一维数组 二维数组 多维数组
数组的元素是一个一维数组
把一个数组当另一个数组的元素
//二维数组
var arr = []; arr.push([123,123,123]); arr.push([234,234,234]); console.log(arr);
//结果为 [ [1231,1232,1233], [234,234,234] ]
//简写提取 arr[0][1]//0为选第一行数组的元素,1为选第一行数组的第二个元素
数组例题:
青歌赛打分、20位评委给一个选手打分、去掉一个最高分、去掉一个最低分求平均得分、去掉两个分
var arr = [50,40,41,21,53,43,46,48]; var max =arr[0];//最高分 var min =arr[0];//最低分 var sum =0;//总分 for(var i=0;i<arr.length;++i){ sum += arr[i];//各项的和
//比较大小,交换
//最高分 if(max< arr[i]){ max=arr[i]; }
//最低分
if(min > arr[i]){ min = arr[i]; } }
var avg = (sum-max-min)/(arr.length-2);//求平均分 console.log("平均分:"+avg+";最高分:"+max+";最低分:"+min);
改错:
4、HTML中、创建表格标签是 A
A、<table>....</table> B、<tr>...</tr>(行,表格元素) C、<td>...</td>(列显示,表格元素) D、<p>....</p>(段落)
8、设置表格跨列显示的属性 B
A、Rowspan(跨行纵向合并) B、Colspan(跨列,横向合并单元格) C、Rows (规定文本区域内可见的行数。) D、cols(规定文本区域内可见的列数)
9、用于在网页中创建表单的标签c
A、<input>(表单元素) B、<select>(单选元素) C、<form>(表单标签) D、<textarea>(多行文本)
11、checked属性适用于哪个表单元素AB
A、<input type=”radio”>(单选) B、<input type=”checkbox”>(多选)
C、<input type=”text”>(文本) D、<input type=”button”>(按钮)
13、哪些属性用于<textarea>标签AD
A、Cols (规定文本区域内可见的列数) B、Size C、Type D、Rows(规定文本区域内可见的行数。)
下面关于列表属性描述正确的是D
A、list-type-image可以使用图像代替列表项标记 list-style-image
B、List-type可以设置列表项的类型 list-style-type
C、List-position:inside标志表示项目标放在文本以外list-style-position:
D、List-style可以吧列表所有属性设置与一个声明中
24、可以隐藏元素的选项B
A、display:block B、Display:none消失 C、display:hidden 改: visibility:hidden影响布局 D、display:hide
反省:
1.认真读题,看清题意。
2.多思考,多做练习巩固。
3.认真对待每一次考试,根据自己情况调整,看自己前进退步多少,多努力;
4.慢慢养成每天做练习的习惯,写好总结,记好笔记,贵在持之以恒,笨鸟先飞,成功路上无捷径;
5.多和同学交流,互换想法,汲取经验。
6.每天拿出十分钟回顾之前学的,查看博客,笔记,多看一下资料教学;