1. 数组
数组:具有相同类型(或者不同类型)的数据有序集合,每个值叫做一个元素,而每个元素在数组中有一个位置,以数字表示,称为索引/下标。js的数组是无类型的,数组元素可以是任意类型,同一个数组中的不同元素可能是对象或数组。
2. 创建数组
1.构造函数方式:
var myCars=new Array(); myCars[0]="奥迪"; ? ? ? myCars[1]="宝马"; myCars[2]="奔驰";
2.简洁方式:
var myCars=new Array("沃尔沃","保时捷","奥拓");?
注意:空数组的长度 var myCars=new Array(3);如果是数字是数组的长度,如果是非数字那么则是一个一个元素。
3.字面量定义方式:常用
?var myCars=["凯迪拉克","宝骏","QQ"]; var myCars=[];空数组
3. 访问数组
通过指定数组名以及索引号码,你可以访问某个特定的元素。
var name=myCars[0];
以下实例修改了数组 myCars 的第一个元素:
myCars[0]="雪佛兰";
4. 遍历数组
?遍历数组:利用循环获取数组中每个元素的值
?var arr = ['周杰伦', '蔡依林', '侯佩岑', '田馥甄','张三']; for (var i = 0; i < arr.length; i++) { ?? ??? ?console.log(arr[i]); ?? ?}
5. 数组方法和属性
?使用数组对象预定义属性和方法:
var x=myCars.length ? ? ? ? ? ? // myCars 中元素的数量 var y=myCars.indexOf("玛莎拉蒂") ? // "玛莎拉蒂" 值的索引值
6. 数组的增删改查
1.增?
(1)?从数组的尾部添加一个元素
var arr = [0,1,2,3,4,5]; arr[arr.length] = 6;
(2)从数组的头部添加一个元素
?var arr = [1,2,3,4,5]; for(var i = arr.length-1;i>=0;i--){ ?? ?//把当前索引中的值复制给下一个索引 ?? ?arr[i+1]=arr[i];?? ??? ? ?? ?} arr[0] = '哈哈';
? ? ? ? ? ? var arr = [1,2,3,4,5];? ? ? ? ? ?
? ? ? ? ? ? // 所有的元素往后移
? ? ? ? ? ? // arr[5] = arr[4];
? ? ? ? ? ? // arr[4] = arr[3];
? ? ? ? ? ? // arr[3] = arr[2];
? ? ? ? ? ? // arr[2] = arr[1];
? ? ? ? ? ? // arr[1] = arr[0];
? ? ? ? ? ? for(var i = arr.length; i >= 1; i--){
? ? ? ? ? ? ? ? arr[i] = arr[i-1];
? ? ? ? ? ? }
? ? ? ? ? ? arr[0] = 0;
? ? ? ? ? ? console.log(arr);?
?(3)从数组的中间(某个索引值的位置)添加一个元素
var arr = [0,1,2,3,4,5]; for(var i = arr.length-1;i>=3;i--){ ?? ?//把当前索引中的值复制给下一个索引 ?? ?arr[i+1]=arr[i]; ?? ?} arr[3] = '哈哈';
2.删
(1)从数组的尾部删除一个元素
var arr = [0,1,2,3,4,5]; arr.length--; arr.length -= 1;
(2)从数组的头部删除一个元素
var arr = [0,1,2,3,4,5]; for (var i = 1; i < arr.length; i++) { ?? ?// 把当前索引中的值复制给上一个索引 ?? ?arr[i-1] = arr[i]; ?? ?} arr.length--; console.log(arr);?
(3)?从数组的中间(某个索引值)删除一个元素
?var arr = [0,1,2,3,4,5]; for (var i = 3; i < arr.length; i++) { ?? ?//把当前索引中的值复制给上一个索引 ?? ?arr[i-1] = arr[i]; ?? ?} arr.length--; console.log(arr);
3.改
?var arr = [0,1,2,3,4,5]; arr[0] = 8; console.log(arr);
4.查
?var arr = [0,1,2,3,4,5]; console.log(arr[0]); 案例:将元素为3的元素修改为300;
对数组进行求和
<script>
// 对数组进行求和var arr = [6, 11, 16, 10, 80];
var arr = [6, 11, 16, 10, 80];
var sum = 0;
for(var i = 0; i < arr.length; i++){
sum += arr[i];
}
console.log(sum);
</script>
输出数组中最大的值
<script>
var arr = [6,5,3,1,8,7,2,4];
var max = arr[0];
for(var i = 1; i < arr.length; i++){
if(max < arr[i]){
max = arr[i];
}
}
console.log(max);
</script>
输出数组中最小的值
<script>
var arr = [6,5,3,1,8,7,2,4];
var min = arr[0];
for(var i = 1; i < arr.length; i++){
if(min > arr[i]){
min = arr[i];
}
}
console.log(min);
</script>
求平均数
<script>
var arr = [1,2,3,4,5];
var sum = 0;
for(var i = 0; i < arr.length; i++){
sum += arr[i];
}
console.log(sum/arr.length);
</script>
将数组中所有元素和拼接成一个新的字符串
<script>
// 将数组中所有元素和|拼接成一个新的字符串
var arr = ['玉兔精','女儿国国王','蜘蛛精','七仙女'];
// 玉兔精|女儿国国王|蜘蛛精|七仙女
var joint = '';
for(var i = 0; i < arr.length-1; i++){
joint += arr[i] + '|';
}
joint += arr[arr.length-1];
console.log(joint);
</script>
反向遍历
<script>
var arr = [1,2,3,4,5];
for(var i = arr.length - 1; i >=0; i--){
console.log(arr[i]);
}
</script>
动态在尾部添加元素
<script>
var arr = [];
// 不知道前面有多少数据然后我要添加
arr[arr.length] = 1;
console.log(arr);
arr[arr.length] = 2;
console.log(arr);
</script>
去掉数组中元素的值是0的,重新生成一个新数组
<script>
//去掉数组中元素的值是0的,重新生成一个新数组
// 获取数组中不是0的元素 存在到新的数组中
//[5,0,4,2,0,8,0,9]
var arr = [5,0,4,2,0,8,0,9];
var new_arr = [];
for(var i = 0; i < arr.length; i++){
if(arr[i] != 0){
new_arr[new_arr.length] = arr[i];
}
}
console.log(new_arr);
</script>
合并数组-生成一个新的数组
<script>
var arr = [1,3,5,7,9];
var arr1 = [2,4,6,8,10];
var new_arr = [];
for(var i = 0; i < arr.length; i++){
new_arr[new_arr.length] = arr[i];
}
for(var j = 0; j < arr1.length; j++){
new_arr[new_arr.length] = arr1[j];
}
console.log(new_arr);
</script>
合并数组-将一个数组追加到另一个数组里面
<script>
var arr = [1,2,3,4,5];
var arr1= [6,7,8,9,10];
for(var i = 0; i < arr1.length; i++){
arr[arr.length] = arr1[i];
}
console.log(arr);
</script>
翻转数组-将一个数组翻转之后生成一个新的数组
<script>
// [1,2,3,4,5];
var arr = [1,2,3,4,5];
var new_arr = [];
for(var i = arr.length - 1; i >= 0; i--){
new_arr[new_arr.length] = arr[i];
}
console.log(new_arr);
</script>
?数组翻转-在原数组上进行翻转
<script>
// 将两个变量互换
// 0 1 2 3 4
var arr = [1,2,3,4,5];
// 0 4
// 1 3
// 2 2
// 给你一个i怎么另一个对应的下标
for(var i = 0 ; i <= 2; i++){
// arr[i] arr[arr.length - i - 1]
var temp = arr[i];
arr[i] = arr[arr.length - i - 1];
arr[arr.length - i - 1] = temp;
}
console.log(arr);
// 0 length-1 - i(0) 5 -1- 0
// 1 length-1 - i(1) 5- 1 -1
// 2 length-1 - i(2) 5- 1 - 2
// 两个数相加等于一个数 在js中 - 1 - i即可
</script>
var arr = [1,2,3,4,5,6];
for(var i = 0; i < arr.length/2; i++){
var temp = arr[i];
arr[i] = arr[arr.length - 1- i];
arr[arr.length - 1- i] = temp;
}
console.log(arr);
冒泡排序
<script>
// 0趟 比较了7次 0~6 7
// 1趟 比较了6次 0~5 7
// 2趟 比较了5次 0~4 7
// 3趟 比较了4次 0~3 7
// 4趟 比较了3次 0~2 7
// 5趟 比较了2次 0~1 7
// 6趟 比较了1次 0 7
// 一共是8个数 比较了7趟 因为每一趟都找到了一个最大的数
// 剩余的哪一个数就没有必要去比较了
// 次数:每一趟都找到了一个最大值 那么那个最大值就没有必要
// 再次比较了
// (1)外层for循环是趟数
// (2)内存for循环是次数
// (3)如果前面的那个数要比后面的那个数大 才可以交换
// (4)依赖于第三个变量 交换
var arr = [6,5,3,1,8,7,2,4];
for(var i = 0; i < arr.length - 1; i++){
for(var j = 0; j < arr.length - 1 - i; j++){
if(arr[j] > arr[j+1]){
var temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
console.log(arr);
</script>
数组去重
<script>
var arr = [1,2,1,3,4,1,2,3,4];
// 存储不重复的元素
var new_arr = [];
var flag = true;
// 从旧的数组中一个一个的拿元素
for(var i = 0; i < arr.length; i++){
// 遍历的是新的数组
for(var j = 0; j < new_arr.length; j++){
if(arr[i] == new_arr[j]){
flag = false;
break;
}
}
if(flag){
new_arr[new_arr.length] = arr[i];
}
flag = true;
}
console.log(new_arr);
</script>
多维数组
<script>
// 一维数组
var arr_one = ['卷饼','香肠','菠菜面','凉菜','炒饭'];
console.log(arr_one[3]);
// 二维数组
var arr_two = [
['冷吃兔','跳水鱼','牛佛烘肘'],
['三合一','羊肉泡馍','biangbiang面']
];
console.log(arr_two[1][0]);
// 三维数组
var arr_three = [
[
['大雁塔','华山','华清池']
],
[
['故宫','天坛','大观园']
]
];
console.log(arr_three[0][0][2]);
</script>
|