数组

为什么要使用数组?

当我们需要表示多个数组时,一个一个定义十分不方便。比如:一个班级中所有人的名字。所有门店的年销售记录,一个门店一年的日销售额。

数组的概念

一组数据的集合。

在数组中可以存放任意类型的数据。每一个数据我们称之为元素。

每一个元素在数组中是有编号的,这个编号就称之为下标。

声明定义数组

1.构造函数

var arr = new Array();
//还可以在定义数组中,定义数组中保存的数据。
var arr = new Array(10,20,30)
//注意 这里的10不再是一个元素,则是数组的长度。
var arr = new Array(10)

【注意】通过构造函数创建数组时,如果传入的数据只有一个,且刚好是一个数字,则表示,定义数组的长度。

2.字面量方式

var arr = [];
//还可以在定义数组中,定义数组中保存的数据。
var arr = [10,20,30]

数组的属性和方法

长度

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

下标的范围:0 ~ length-1

var arr = [10,20,30];
console.log(arr.length);

访问元素

使用arr[下标]就可以访问元素。

方法

  • push(重点)

在元素的末尾处添加元素,会修改原数组

arr.push(元素)
  • pop

从元素的末尾删除一个元素,会修改原数组,返回删除的元素。

var res = arr.pop() //res 表示 被删除的元素,也就是原数组中最后一个元素。
  • shift

从数组的头部删除一个元素,会修改原数组,返回删除的元素。

var res = arr.shift(); //res 表示 被删除的元素,也就是原数组中第一个元素。
  • unshift

在数组的头部添加一个元素,返回值是插入后,数组的长度。

var res = arr.unshift(元素) //res 是插入后数组的长度。
  • concat

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

//newArr为新数组, arr1,arr2为要合并的两个数组 
   var newArr = arr1.concat(arr2);
  • slice

获取数组中指定区域的元素

//start : 开始的位置, end:结束的位置、  含头不含尾  
//举例:arr.slice(1,3) 获取的元素 arr[1] arr[2] 不包含arr[3]
arr.slice(start,end)
  • join

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

var str = arr.join("|");
// | 就是分隔符。 每个元素最后拼接成字符串时,之间用|分割。
// str 就是最后拼接成的字符串
​
//举例 [10,20,30].join("&") 返回的字符串为: 10&20&30
  • reverse

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

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

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

var arr = [10,30,40,20];
arr.sort();
//arr  [10,20,30,40]

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

var arr = [12,3,2];
arr.sort();
//结果: [12,2,3];

自定义规则:

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

这个函数返回值如果大于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]

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];
arr.splice(1,2);
//从下标为1的地方开始,删除2个元素。 只有两个参数说明不添加新元素。

修改

var arr= [10,20,30];
arr.splice(1,1,40);
//从下标为1的地方开始,删除1个元素。 再将40放在下标为1的位置上。

二维数组

数组中嵌套数据

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

冒泡排序

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、付费专栏及课程。

余额充值