数组及操作⽅法(详解)
数组
数组的概念
数组是⼀个存放相同数据类型的容器,也是⼀个变量。
举个简单的例⼦:
货架上的商品是⼀堆相同的商品,⽽货架就是存放商品的数组。
创建数组
语法⼀:
var arr = []; // 创建了⼀个空数组
var arr = ["张三","李四","王五"]; // 创建了⼀个数组,⾥⾯存了三个姓名
语法⼆:使⽤构造函数的形式创建数组
var arr = new Array(); // 创建了⼀个空数组
var arr = new Array(3); // 创建了⼀个长度为3的数组
var arr = new Array("张三","李四","王五"); // 创建了⼀个数组,⾥⾯存了三个姓名
使⽤构造函数的⽅式创建数组的时候,如果其中只有⼀个值,如果这个值是整数,表⽰数组的长度,否则表⽰这个数组中有⼀个元素,就是这个值。
var arr = new Array(3)
console.log(arr);//输出结果
//Array(3)
//length: 3
//__proto__: Array(0)
数组中可以存放任意类型的值,但实际情况中,我们习惯将同类型的数据存到⼀个数组中。
var arr = ['张三',123,true,'underfind']
数组的操作
访问数组中的元素:数组[下标],例:
var arr = ["张三","李四","王五"];
console.log(arr[1]); // 李四
数组中下标是从0开始
查看数组中元素的个数 - 数组的长度:数组.length,例:
var arr = ['张三',"李四","王五","赵六"];
var arr1 = [1,2,3,4,5,6];
console.log(arr.length); // 4
数组中长度length与下标不同,使⽤时易混淆
数组的长度可以访问,也可以赋值,⽤来修改数组的长度。例:
var arr = ['张三',"李四","王五","赵六"];
console.log(arr); // (4) ["张三", "李四", "王五", "赵六"]
console.log(arr.length); // 4
arr.length = 6;
console.log(arr); // (6) ["张三", "李四", "王五", "赵六", empty × 2] 后⾯的表⽰还有两个空元素
console.log(arr.length); // 6
给数组添加元素:数组[下标] = 值,例:
var arr = ["张三","李四"];
arr[2] = "王五";
console.log(arr); // (3) ["张三", "李四", "王五"]
arr[10] = "赵六";
console.log(arr); // (11) ["张三", "李四", "王五", empty × 7, "赵六"] 中间还有7个空元素
修改数组中元素的值:数组[下标] = 值,例:
var arr = ["张三","李四"];
arr[0] = "王五";
console.log(arr); // (2) ["王五", "李四"]
清空数组:如果下标是已经存在的,那赋值操作就是修改数组元素的值,如果下标是不存在,那赋值操作就给数组添加元素。例:
var arr = [1,2,3];
arr = [];
console.log(arr); // []
// 或者
arr.length = 0;
console.log(arr); // []
数组总结:
1. 数组的第⼀个元素的下标永远是0;
2. 数组的最后⼀个元素的下标永远是数组的长度-1
遍历数组
如果要将数组中的所有元素都输出,操作如下:
var arr = ["张三","李四","王五","赵六"];
console.log(arr[0]); // 张三
console.log(arr[1]); // 李四
console.log(arr[2]); // 王五
console.log(arr[3]); // 赵六
从上⾯输出的代码中可以看出,多次输出是在进⾏重复动作,并且多次重复之间是有规律可循的,所以可以使⽤循环进⾏这个重复动作:使⽤数组长度遍历:
var arr = ["张三","李四","王五","赵六"];
/*
for(var i=0;i<4;i++){
console.log(arr[i]);
}
*/
// 条件中的4写死以后,如果数组再添加了新元素,就没办法遍历了,所以将4换成数组的长度。
// 循环中的条件执⾏5次,也就是我们需要求5次数组的长度,所以将求数组长度的操作放到循环外⾯可以提⾼执⾏效率
var length = arr.length;
for(var i=0;i<length;i++){
console.log(arr[i]);
}
使⽤for in遍历:
var arr = ["张三","李四","王五","赵六"];
for (var i in arr) {
console.log(arr[i]);
}
数组练习
利⽤for循环求数字数组中所有元素的和
var arr = [10,20,30,40,50];
var sum = 0;
for(var i = 0;i < arr.length; i++){
sum += arr[i];
}
alert(sum);
利⽤for in 来遍历的数组:注意:for in不会遍历空元素
var arr = [10,20,30,40,50];
var sum = 0;
for (var i in arr) {
sum += arr[i];
}
alert(sum);
利⽤for in 求数组中所有元素的和
var arr = [10,20,30,40,50];
var sum = 0;
for (var i in arr) {
sum += arr[i];
}
alert(sum);
⼆维数组
⼆维数组就是在数组中嵌套数组,我们最常⽤的也就是⼆维数组。
var arr = [
"Jack",
"Rose",
["张三","李四"],
["张⼩三","李⼩四"]
];
console.log(arr);//(4) ["Jack", "Rose", Array(2), Array(2)]
console.log(arr[2]);//(2) ["张三", "李四"]
console.log(arr[2][1]);//李四
通过下标选择元素。
操作数组的⽅法
splice : 数组任意地⽅删除或者添加元素
var arr = ['zs','ls','ww','zl','xmg'];
//splice(start, deletedCount)  删除元素
// start 开始        deletedCount 删除个数
arr.splice(0, 2)//⽆需调⽤变量接受数据
console.log(arr)//打印删除后的arr
//查看被删除元素
var brr=arr.splice(0,2)//需要定义变量接受数据
console.log(brr)//(2) ["zs", "ls"]    在控制台打印查看删除的元素
//splice(start, deletedCount , item) 删除+添加,  第三个参数是在原来删除的位置上新加⼏个元素arr.splice(0, 2,"ni","hao")
console.log(arr)//(5) ["ni", "hao", "ww", "zl", "xmg"]
//特殊 :
//  splice(start, 0 , item)  就是在某个位置新加元素
arr.splice(1, 0,"新增的")
console.log(arr)//(6) ["zs", "新增的", "ls", "ww", "zl", "xmg"]
数组的增删操作
var arr = ['zs','ls','ww']
arr.push(元素);//从末尾添加元素,并返回新数组的length,()不填数据没有新增
console.log(arr)//(4) ["zs", "ls", "ww", "末尾新增"]
arr.pop();//从数组的后⾯删除元素,返回删除的那个元素,()不填数据
console.log(arr)//(2) ["zs", "ls"]
arr.unshift(元素);//从数组的前⾯的添加元素,返回新数组的长度,()不填数据没有新增console.log(arr)//(4) ["头部新增", "zs", "ls", "ww"]
arr.shift();//从数组的最前⾯删除元素,返回删除的那个元素,()不填数据
array工艺详解console.log(arr)//(2) ["ls", "ww"]
//总结:
//1. shift 在前⾯ ,所以处理数组前⾯的
//2. p+ 在后⾯,所以是处理后⾯的
//3. unshift ⽐ shift 多个un,,所以就是加
//4. 添加的都是返回长度
//5. 删除的都是返回删除的元素
//6. 添加要说明添加什元素,,删除直接删除
数组的排序
var arr = [9,1,6,4,3,8,2,7,5];
arr.sort();
console.log(arr);//(9) [1, 2, 3, 4, 5, 6, 7, 8, 9]
var arr = [9,1,16,4,3,28,2,7,5];
arr.sort();//数组的排序,默认按照字母/⾸字符顺序排序 => 1 11 2 3
console.log(arr);//(9) [1, 16, 2, 28, 3, 4, 5, 7, 9]
//sort⽅法可以传递⼀个函数作为参数,这个参数⽤来控制数组如何进⾏排序
arr.sort(function(a, b){
return a - b;//a-b就是从⼩到⼤,b-a就是从⼤到⼩
});
数组的反转
var arr =  ['a','b','c','d'];
console.log(arr)//console.log(arr)
数组和字符串的转换
//语法:array.join(分隔符)
//作⽤:将数组的值拼接成字符串,并且返回字符串
var arr = [1,2,3,4,5];
arr.join();//不传参数,默认按【,】进⾏拼接
arr.join("");//按【"】进⾏拼接
arr.join("-");//按【-】进⾏拼接
//split:将字符串分割成数组(很常⽤)
//功能和数组的join正好相反。
var str = "张三,李四,王五";
var arr = str.split(",");
数组的拼接
//concat:数组合并,不会影响原来的数组,会返回⼀个新数组。
var arr=[1,2,3]
var brr=[7,8,9]
var crr = at(brr)
console.log(crr)//(6) [1, 2, 3, 7, 8, 9]
var arr=[1,2,3]
var crr = at("ni","hao");//可以在concat()中添加字符串等跟数组合并,不⼀定必须是数组console.log(crr)//(5) [1, 2, 3, "ni", "hao"]

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。