一.数组的概念
一组数据,数据的组合
那些数据的组合,只要是数据(数据),就可以放在数组中
数组的意义:
可以同时操作多个数据
二.数组的创建和使用
1. 创建:
字面量:var arr = []
构造函数:var arr = new Array();
var arr = [234,"hello"];
var arr2 = new Array(233,"hello")
console.log(arr) // 234 hello
console.log(arr2) // 234 hello
console.log(arr == arr2) // false 任何两个对象都不相等
任何两个对象都不相等
区别:当只有一个数据,还是数值时,字面量会在数组中保存这个值
构造函数会将这个数值作为长度
var arr = [6];
var arr2 = new Array(6);
console.log(arr); //[6]
console.log(arr2); // [empty*6] 当new Array(1,2,3)-->[1,2,3]
console.log(arr.length) //1
console.log(arr2.length) //6
三.数组的操作:
1. 索引操作:
var arr = ["hello","world"];
增:给并不存在的索引赋值
arr[5] = 1;
console.log(arr[5]); //1
console.log(arr); //["hello","world",empty*3,1];
删:
console.log(arr.length) //2
arr.length = 1;
console.log(arr) ["hello"]
改:
console.log(arr[0]); //hello
arr[0] = "aaaa" //【】将第几位的字符改变
console.log(arr) //["aaaa","world"]
查:数据的遍历
console.log(arr[0]) //hello
console.log(arr[1]) //world
for(var i = 0;i<arr.length;i++){
console.log(arr[i]) //全部打印出来
}
2.方法操作:
var arr = ["hello","world"];
console.log(arr) //["hello","world"]
方法:对象中的函数属性
push:在数组的最后增加
arr.push(3,4,5,6,7)
console.log(arr) //["hello","world",3,4,5,6,7]
pop:删除数组的最后一位数据
arr.pop();
console.log() //["hello"]
unshift:在数组的开头增加
arr.unshift(3,4,5,6,7)
console.log(arr) //[3,4,5,6,7,"hello","world"]
shift:删除数组的第一位数据
arr.shift(); //["world"]
var arr = ["hello","aa","bb","cc","dd","world"];
splice(start,num,replaceDate1,replaceDate2,.........)至少有三个
arr.splice(m,n) //m 【0,1,2.。。】
arr.splice(2,1) //删除指定位置 ["hello","aa","cc","dd","world"]
arr.splice(2,1,"js") //删除并替换一个或多个 ["hello","aa","js","dd","world"]
arr.splice(2,1,"js","ESCA")
arr.splice(2,0,"js",...) //在指定位置新增一个或多个 ["hello", "aa", "js", "bb", "cc", "dd", "world"]
//(m,n)m 第m个位置开始删除 删除n个 n个字符 “ ”删除的位置添加新元素
slice(m,n):截取,从索引m,截取到索引n前一个
var arr = [5,61,17,28,9,19,16,18];
console,log(arr);
var a = arr.slice(2,6); //[17,28,9,19]
var a = arr.slice(3,7); //[28,9,19,16]
console.log(a)
sort():字符的排序,逐位比较
arr.sort(function(a,b){
return a-b; //降序 [5, 9, 16, 17, 18, 19, 28, 61]
return b-a; //升序 [61, 28, 19, 18, 17, 16, 9, 5]
});
console.log(arr)
四.数组的操作方法
方法:函数,处理数据
功能:观察提现
处理数据:找返回值
数组的方法:
功能:关注其执行结果
操作数据类:关注其返回值
功能方法没有必要关注返回值
但是功能方法可以有返回值
*随机数:Math.random()
//Math.radom()随机抽取0~1的小数//
for(var i = 0;i<10;i++){
Math.round()遇到小数四舍五入 , parseInt()遇到小数则向下
console.log(Math.round(Math.random()*(10-1)+1))
} a,,b无需按大小顺序编写
function random(a,b){
Math.round(Math.random()*(a-b)+b);
}
i为次数 结果得到a~b i个随机数
五.数组的排序:sort(function(){})
数组的排序方式
冒泡排序:两两比较
var arr=[5,7,2,9,1]
//0-1 1-2 2-3 3-4 0~length-1 -0 原本的次数
//0-1 1-2 2-3 (0~length-1) -1 少执行1次
//0-1 1-2 (0~length-1)-2
//0-1 (0~length-1)-3
长度 length
比了length-1轮 length-1行
多行多列 循环嵌套
次数,外层循环控制行 length-1
for(var i=0;i<arr.length-1; i++){
内层循环控制列 随着i次数增大 j执行次数 3210
for(var j=0;j<arr.length-1 -i){
if(arr[j]>arr[j+1]){ ---->两两相比
var ls=arr[j];
arr[j]=arr[j+1]; ------>互换位置
arr[]j+1] = ls;
}
}
}
console.log(arr); 冒泡排序
选择排序:将第一位和后面所有相比较,最小的交换在第一位
一轮比下来,第一位数最小
var arr=[6,2,9,1,7,3] //第一轮 6和后面所有的数比较 最小的2在前面
0-1 0-2 0-3 0-4 0-5 0-length-1
1-2 1-3 1-4 1-5 1-length-1
2-3 2-4 2-5 2-length-1
3-4 3-5 3-length-1
4-5 4-length-1
多行多列
length-1行(外层循环-1)
for(var i=0;i<arr.length-1;i++){
var min = arr[i]; // 1. 假设最小值
var minIndex = i; //2. 保存索引
j随着i增加而增加 0到4 5次
for(var j=i+1,j<arr.length(length不能-1 ,j跟随i);j++){
当j=i=0时,会发生和自己比较,但不交换,多比了一次,因此j=i+1
if(min>arr[j]){ //判断最小值是否为真的最小值
当i=0,j取0~5
min = arr[j]; //3.交换 获取真正的最小值
minIndex = j; // 位置 获取真正最小值的索引
}
}
arr[minIndex] = arr[i]; // 把第一位拿出来放在最小值
arr[i] =min; //把最小值拿出来放在第一位
}
console.log(arr)
六.数组的分类:
1.当一个数组中都是字符时,这种数组叫字符数组
var arr = ["a","b","c","d"]
2.当一个数组中都是数值时,这种数组叫数值数组
var arr = [2,3,4,5,6,7]
3.当一个数组中都是数组时,这种数组叫数组数组(二维数组)
多维数组
var arr = [["a",23,true],[67,"hello"],[false,123],["a",789]];
console.log(arr[2][1]) ---->123
4.当一个数组中都是对象时,这种数组叫对象数组(json数组)
json是一种格式,目前只是借用这个名字,以此说明这个格式,而跟json自身没有关系
var arr = [{name:"admin"},{name:"zhangsan"},{name:"lisi"}]
console.log(arr[1].name) ------>zhangsan