数组
JavaScript数组的定义方法和对象相似。
定义方法
第一种:数组字面量定义:
var arr = [1,2,3,4,5]; //建议第一种
第二种:构造函数定义方法。使用Array.prototype原型
var arr1 = new Array(num)//num 可以传参也可以不传,表示多长的数组。
数组的读和写
数组的读和写,没有太多的规则,
var arr = [];
console.log(arr[10]);
//undefined
访问数组,我们知道访问对象属性的时候,如果对象原型链上没有该属性,返回undefined 不会报错,上面说到,数组的原型是Array。prototype再访问this对象的时候,发现没有和对象一样返回undefined。
var arr = [];
arr[5] = 10;
console.log(arr);
//输出 undefined undefined undefined undefined 10
数组写入也没有太大的规则,一个空数组,当你arr[5]的位置插入一个数的话,系统会在前面默认为undefined。
数组的方法
数组的方法有两种,分为改变原数组的方法和不改变原数组的方法。
改变原数组
push():在数组的尾部插入值,可以插入多个
var arr = [1,2,3];
arr.push(4,5,6);
console(arr);
//[1,2,3,4,5,6]
pop():在数组的尾部删除一个数,并返回删除的值。
var arr = [1,2,3,4];
var num = arr.pop();
console(num);
console.log(arr);
// 4 [1,2,3]
unshift():方法和push()一样,只是方向相反,这个是在头部操作。
var arr = [1,2,3];
arr.unshift(0,0,0);
console.log(arr);
//[0,0,0,1,2,3]
shift():方法和pop()一样,方向相反,头部操作。
var arr = [1,2,3,4];
var num = arr.shift();
console.log(num);
console.log(arr);
// 1 [2,3,4]
splice()
// arr.splice(从第几位开始,截取多少长度,在切口处添加新的数据(多少个都行))
var arr = [1,2,3,4,5,6,7];
arr.splice(2,4,0,0,0,0);
console.log(arr);
//[1,2,0,0,0,0,7]
sort():sort在排序的时候会按照字符的ascll码来判断,有时候回发生错误,所以sort给我们定义借口,让我们自己来定义规则。
规则:1.必须有两个参数。
2.返回值:1)当返回值为负时,当前的数在前面。2)为正数时,后面的数在前面。3)为0时,不变
var arr = [1,4,7,8,5,2,3,6,9];
arr.sort(function(a,b){
return a - b; //正序 至于为什么是a - b 和 b - a 通过数学运算得出。
return b - a; //逆序
})
console.log(arr);
// 正序 [1,2,3,4,5,6,7,8,9]
// 逆序 [9,8,7,6,5,4,3,2,1]
有序数组的乱序----运用排序方法
引入Math函数的随机数,Math.random()-----产生0 - 1 之间的数。每次逆序和正序次数随机就可以做到乱序,每次都不相同
var arr = [1,2,3,4,5,6];
arr.sort(function(a,b){
var num = Math.floor(Math.random() * 2);
return num == 1 ? a - b : b - a;
})
对象按照属性值排序
var arr = [1,2,3,4,5,6];
arr.sort(function(a,b){
var num = Math.floor(Math.random() * 2);
return num == 1 ? a - b : b - a;
}
var wang = {
name : "wang",
age : 20,
sex : "male",
face : "handsome",
}
var zhou = {
name : "zhou",
age : 18,
sex : "male",
face : "beautiful",
}
var ke = {
name : "xin",
age : 19,
face : "abc",
}
var arr = [wang, zhou, ke];
arr.sort(function(a,b){
return b.age - a.age;
})
不改变原数组
concat():连接数组,原数组不变,产生新数组。
var arr = [1,2,3];
var arr1 = [4,5,6];
console.log(arr.concat(arr1));
//[1,2,3,4,5,6]
toString():把数组转换成字符串,原数组不变。
var arr = [1,2,3,4];
console.log(arr.toString());
// '1,2,3,4'
slice(从该位开始截取,截取到该位 )-->两个参数 ;
(从第几位截取一直到末尾)-->一个参数;
(不写参数)-->整个截取
必须有值接受。
var arr = [1,2,3,4];
var num = arr.slice(1,2);
console.log(num);
//[2]
join("")参数可以写,可以不接,按照什么方式把数组中的数连接,返回字符串,不写的话,默认用逗号连接
var str = "a";
var str1 = "b";
var str2 = "c";
var str3 = "d";
var str4 = "e";
var str5 = "f";
var str6 = "g";
var arr =[str,str1,str2,str3,str4,str5,str6]; //数组是散列结构
var str7 = arr.join(""); //最好的连接方法
console.log(str7);
//'abcdefg'
split(“”):这个是字符串中的应用,和join相反,这个是按照什么东西拆分,返回数组
var str = 'a-b-c-d';
var arr = str.split("-");
console.log(arr);
//['a','b','c','d']
JavaScript语言我个人感觉是最有意思的了,我也是一个初学者,遇到问题,喜欢在博客上分享,
也希望能帮到大家。一个初学者,有什么不足或者纰漏的话,希望在下面评论出来,相互学习,共同进步。