数组的相关知识

数组

1. 声明定义数组

1.1 构造函数

 var arr1 = new Array();
    // 可以直接传入参数
    var arr2 = new Array(10, 20, 30);
    console.log(arr2);
    // 当只有一个属性时,代表的是数组的长度
    var arr3 = new Array(10);
    console.log(arr3);
    console.log(arr3.length);

注意:当传入的是一个数时,这个数代表的是这个数组的长度

结果:
在这里插入图片描述

1.2 字面量方法

 // 字面量方法
    var arr0 = [];
    // 可以定义的时候传入数据
    var arr1 = [1, 2, 3];
    console.log(arr1);

结果:
在这里插入图片描述

2. 数组的属性

2.1 数组的长度

使用arr.length来获取数组的长度

var arr1 = [1, 2, 3];
console.log(arr1.length);

结果:
在这里插入图片描述

2.2 数组的下标

数组下标的范围:[0~ arr.length)或者[0~arr.length-1]

注意:是从0开始的,包含0

2.3 访问数组

方法: arr[下标]

 var arr1 = [1, 2, 3];
 console.log(arr1[0]);

结果:
在这里插入图片描述

3. 数组的方法

3.1 添加元素

push() 尾部

是在数组的尾部添加的元素,会改变原来的数组,得到新的数组

var arr = [1, 2, 3, 4, 5];
console.log("原数组:" + arr);
// push()方法
arr.push(10);
console.log("新数组:" + arr);

结果:
在这里插入图片描述

unshift() 头部

是在数组的头部添加的元素,会改变原来的数组,得到新的数组

var arr = [1, 2, 3, 4, 5];
console.log("原数组:" + arr);
// unshift()方法
arr.unshift(10);
console.log("新数组:" + arr);

结果:
在这里插入图片描述

3.2 删除元素

pop() 尾部

是在数组的尾部进行删除,会改变原来的数组,返回一个新的数组

 var arr = [1, 2, 3, 4, 5];
 console.log("原数组:" + arr);
 // pop()方法
 arr.pop();
 console.log("新数组:" + arr);

结果:
在这里插入图片描述

shift() 头部

是在数组的头部进行删除,会改变原来的数组,返回一个新的数组

var arr = [1, 2, 3, 4, 5];
console.log("原数组:" + arr);
// shift()方法
arr.shift();
console.log("新数组:" + arr);

结果:
在这里插入图片描述

3.3 数组的组合

concat()

将两个数组中的元素合并为一个新数组,合并完成后,不会修改原数组。

var arr = [1, 2, 3, 4, 5];
var arr1 = [10, 11];
console.log("原数组:" + arr);
// concat()方法
var newarr = arr.concat(arr1);
console.log("新数组:" + newarr);

var newarr = arr.concat(arr1);

结果:
在这里插入图片描述
var newarr = arr1.concat(arr);

结果:
在这里插入图片描述
注意:newarr=arr1.concat(arr2); 结果是由arr1与arr2组成的 arr1在前

​ newarr=arr2.concat(arr1); 结果是由arr2与arr1组成的arr2在前

3.3 获取指定元素的区域

slice()

获取数组中指定区域的元素,不会修改原来的元素

范围:[start,end)

var arr = [1, 2, 3, 4, 5];
var new1 = arr.slice(0, 3);// 包含下边0但不包含下标3的元素
console.log(new1);

结果:
在这里插入图片描述

3.4 删除并添加新元素

splice(重点)

删除并添加新元素,会修改原来的元素

arr.splice(start,length,数据1,数据2...)
// start : 开始的位置
// length:从start开始,删除的长度
//数据1,数据2 将它们添加到start位置上。
新增
var arr= [10,20,30];
arr.splice(1,0,40);
//将40添加到下标为1的位置上, 0:不删除元素。

结果:
在这里插入图片描述

删除
var arr = [10, 20, 30];
console.log("原数组:" + arr);
var new1 = arr.splice(1, 2);//从下标为1的地方开始,删除2个元素。 只有两个参数说明不添加新元素。
console.log("截取后的原数组:" + arr);
console.log("截取后的新数组:" + new1);

结果:
在这里插入图片描述

修改
var arr = [10, 20, 30];
console.log("原数组:" + arr);
arr.splice(1, 1, 40);//从下标为1的地方开始,删除1个元素。 再将40放在下标为1的位置上。
console.log("修改后的原数组:" + arr);

结果:
在这里插入图片描述

3.5 数组拼接字符串

join()

将数组中的元素,用传入的分隔符(字符串)拼接成一个新的字符串。

var arr = [10, 20, 30];
var str = arr.join("|");
console.log(str);

结果:
在这里插入图片描述

3.6 数组的反转

reverse()

反转数组,会影响原数组。

var arr = [10,20,30];
arr.reverse();
//arr 的值为:[30,20,10];

3.7 数组的排序

sort()

对数组进行排序,相当于遍历数组中的每一个元素,让当前元素与后面元素进行比较。比较的规则默认是 谁大谁在后面。

var arr = [1,2,30,40,18,20];
arr.sort();
console.log(arr);

结果:
在这里插入图片描述
注意1:先比较数值的第一位,谁大谁排在后面,如果相等,就比较数值的第二位,谁大谁排在后面

上面例子:比较第一位:因为2比18中的第一位1大所以排在后面

注意2:排序是按照Unicode编码排序的,不是按照数字的大小。

自定义规则

传入一个函数。 函数定义两个参数,第一个参数表示当前元素,第二个参数表示下一个元素。相当于,让数组中每一个元素都执行一遍该函数。执行时,该元素会变成第一个参数,下一个元素会传入第二个参数。

这个函数返回值如果大于0,则认为第一个数比较大,如果小于0,则认为第二个数比较大。会将大的数放在后面。

var arr = [12,3,2];
arr.sort(function(a,b){
    return a-b;//从小到大排序
});
//结果:[2,3,12]  
var arr = [12,3,2];
arr.sort(function(a,b){
    //将 a-b 修改为 b-a
    return b-a;//从大到小排序
});
//结果:[12,3,2]

3.8 过滤数组

filter()

过滤数组中符合条件的元素。需要传入一个函数。每一个元素都会执行一次该函数。 该函数有三个参数

arr.filter(function(item,index,arr){
    return 条件表达式;
})

参数说明:

第一个:item 表示执行该函数的元素。

第二个:index 表示该元素在数组中的下标

第三个:arr 表示数组本身。

函数return的值如果是false,则表示不满足条件。return的值如果是true,则表示满足条件,会将当前元素放在一个新数组中。遍历完成后,最终返回一个新数组,该数组中包含所有满足条件的元素。

//过滤大于35的元素,返回到res数组中。
var arr = [10, 20, 30, 40, 50];
var res = arr.filter(function(item,index,arr){
    return item>35;
});

4. 数组的遍历

4.1 for循环

for(var i = 0;i<arr.length;i++){
    console.log(arr[i])
}

4.2 for in 循环

for(var i in arr){
     console.log(arr[i])
}

4.3 forEach循环

arr.forEach(function(item,index){
    console.log(item)
    //console.log(arr[index])
})
   var arr = [1, 2, 3];
    arr.forEach(function(item, index) {
        console.log("arr:" + arr);
        console.log("index:" + index);
    });

结果:
在这里插入图片描述

5. 二维数组

数组中嵌套数据

var arr = [[1,2],[3,4]]
//注意 1,2,3,4并不是arr的元素  arr的元素为[1,2] [3,4]

6. 冒泡排序

var arr = [8,6,4,1,5,2,9]
//定义比较的轮次
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 tmp = arr[j];
            arr[j] = arr[j + 1];
            arr[j + 1] = tmp;
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值