8、数组
(1)、定义数组
var arr = ["小刘", "小松", "小王", "小小", "宝批龙"];
数组的长度:数组名.length;
数组的元素值:数组名[下标];
注意:下标是从0开始的。
(2)、遍历数组中的元素:
//for
for (var i=0; i<arr.length; i++) { console.log(arr.[i]); }
//for in
for (var item in arr) { console.log(arr[item]); } //注意:item是下标
(3)、数组的简单操作
//括号{}的属于一个整体 在数组中单独占一个空间 var temp = [12, 3.1412, "12", "狗剩", true, { s:"xx" }]; //这里为6 var r= temp.length; alert(r); document.write(temp); document.write("<br>"); temp[10] = "新增元素”; document.write(temp); //这里为11 前面在索引为10的地方添加了内容 在6-10的空间中没有值 undefined var l = temp.length; alert(l); //这里显示结果undefined 因为没有装入值 所以未定义 alert(temp[15]);
(4)、常用数组的方法
var yc133 = ["小刘", "小溪”, “美玲”];
a、在数组的末尾添加元素,返回数组的新长度-push
yc133.push("是可爱鸭"); //输出新数组的内容: 小刘,小溪,美玲,是可爱鸭 document.write(yc133);
b、在数组的末尾删除元素,返回被删除的元素-pop
var name = yc133.pop(); // 美玲 document.write(name);
//小刘 小溪
document.write(yc133);
c、在数组开头新增元素,返回数组的新长度-unshift
var n1 = yc133.unshift("赵铁柱"); //值为 4 新增元素,返回新的数组长度 alert(n1);
//赵铁柱 小刘 小溪 美玲
document.write(yc133);
d、在数组开头删除元素,返回被删除的元素-shift
var obj = yc133.shift(); //值为 小刘 返回被删除的元素 alert(obj);
//小溪 美玲
document.write(yc133);
e、截取数组-slice(返回截取的数组,原数组不变)
语法:数组名.slice(开始下标位置,结束下标位置)
var tt = yc133.slice(1,2); //这里截取的1开始 结束时是2的前一位 值为:小溪 document.write(tt);
f、数组的增、删、改-splice
数组名.splice(开始下标, 长度) ==>删除
//删除索引为1开始 总长度为1 的元素 yc133.splice(1,1);
//小刘 美玲
document.write(yc133);
数组名.splice(开始下标, 长度,新元素) ==>替换
//将小溪删除 替换成小王
yc133.splice(1, 1, "小王"); //小刘 小王 美玲 document.write(yc133);
数组名.splice(开始下标, 0,新元素) ==>插入
//在索引为1处添加 小王 yc133.splice(1, 0, "小王"); //小刘 小王 小溪 美玲 document.write(yc133);
g、拼接数组-concat
语法:数组名.concat(arr)---拼接数组,返回新的数组,原数组不变
var arr = ["21", 123]; //拼接数组 返回新的数组 var na = yc133.concat(arr); //小刘,小溪,美玲,21,123 document.write(na.toString());
f、数组排序-sort
语法:数组名.sort(); --根据字符的编码排序
var arr1 = [234, 8, -33, 32, 27, 54, 31, 2, 5, 6, 9, 14, 21, 4, 10, -34, 2]; //234, 8, -33, 32, 27, 54, 31, 2, 5, 6, 9, 14, 21, 4, 10, -34, 2 document.write(arr1); document.write("<br>"); //-33,-34,10,14,2,2,21,234,27,31,32,4,5,54,6,8,9 注意看排序 document.write(arr1.sort());
练习4-1:将arr1按数字从小到大排序
//这里是从小到大 思路是每次循环都找到最小的然后放到前面 //第一层循环遍历每个数 for (var i=0; i<arr1.length; i++) { //第二层循环 在每个数的基础上再取一个下标之后的数 挨个进行比较 当后面小于arr1[i]时
//该值放到arr1[i]处,此处下标是不会变化的,j还是往后继续遍历寻找更小的数 for(var j=i; j<arr1.length; j++) { //进行条件比较 if(arr1[i]>arr1[j]) { //值的变换 但位置下标是不变的 var t = arr1[i]; arr1[i] = arr1[j]; arr[j] = t; }
练习4-2:利用函数,从大到小排序
//234,8,-34,32,27,54,31,2,5,6,9,14,21,4,10,-33,2 document.write(arr1); var arr2 = arr1.sort(function (a, b) { return b - a; }); document.write("<br>"); //234,54,32,31,27,21,14,10,9,8,6,5,4,2,2,-33,-34 document.write(arr2);
练习4-3:利用函数,从小到大排序
//234,8,-34,32,27,54,31,2,5,6,9,14,21,4,10,-33,2 document.write(arr1); var arr3 = arr1.sort(function (a, b) { return a - b; }); document.write("<br>"); //-34,-33,2,2,4,5,6,8,9,10,14,21,27,31,32,54,234 document.write(arr3);