认识数组
现实生活中,人们使用的物品都用到了工具,如盛水的杯子、背包集装箱等,方便和管理物品,他们有共同的特征:容器,主要用途是容纳东西,在程序开发中,如何实现和保存这类数据,这就需要能储存各种数据类型的容器,在JavaScript中被称之为数组。
创建数组
js有俩个方式
1.实例化Array对象
let array_value = new Array();这是不带创建的空数组;
let score= new Array(90,91,92,)带值创建
let some _type =new Array("abc",123,turn,null)混合数据类型
2字面量
let array_value = [];相当于new Array;空数组
let score = [80,90,90,87,40];相当于new Array(80,90,90,87,40)带值创建
let csome_type = ["abc",123,turn,null];相当于new Array("abc",123,turn,null);
let no_value = [123...."abc"];这种空元素也是一种对象类型。
获取数组长度
数组是一个容器,当它被创建后,不仅元素的类型是确定的,元素的个数也是确定的。换句话说,数组的长度是确定的,不可能再变长或者变短。因此,数组可以使用一个字段(length)来表示长度
System.out.println(arr.length);// 获取数组的长度
String str = "打球";
System.out.println(str.length());// 获取字符串的长度
添加或删除数组
splice() 添加/删除数组元素
定义: splice() 方法向/从数组中添加/删除项目,然后返回被删除的项目
语法: array.splice(index,howmany,item1,.....,itemX)
参数:
- index:必需。整数,规定添加/删除项目的位置,使用负数可从数组结尾处规定位置。
- howmany:可选。要删除的项目数量。如果设置为 0,则不会删除项目。
- item1, ..., itemX: 可选。向数组添加的新项目。 返回值: 如果有元素被删除,返回包含被删除项目的新数组。
删除元素 let a = [1, 2, 3, 4, 5, 6, 7];
console.log(a); // [4,5,6,7]
从数组下标0开始,删除3个元素
let item = a.splice(-1, 3); // [7]
从最后一个元素开始删除3个元素,因为最后一个元素,所以只删除了7
删除并添加
let a = [1, 2, 3, 4, 5, 6, 7];
let item = a.splice(0,3,'添加'); // [1,2,3]
console.log(a); // ['添加',4,5,6,7]
从数组下标0开始,删除3个元素,并添加元素'添加'
let b = [1, 2, 3, 4, 5, 6, 7];
let item = b.splice(-2,3,'添加1','添加2'); // [6,7]
console.log(b); // [1,2,3,4,5,'添加1','添加2']
从数组最后第二个元素开始,删除3个元素,并添加两个元素'添加1'、'添加2'
不删除只添加:
let a = [1, 2, 3, 4, 5, 6, 7];
let item = a.splice(0,0,'添加1','添加2'); // [] 没有删除元素,返回空数组
console.log(a); // ['添加1','添加2',1,2,3,4,5,6,7]
let b = [1, 2, 3, 4, 5, 6, 7];
let item = b.splice(-1,0,'添加1','添加2'); // [] 没有删除元素,返回空数组
console.log(b); // [1,2,3,4,5,6,'添加1','添加2',7] 在最后一个元素的前面添加两个元素
- 数组如果元素不够,会删除到最后一个元素为止
- 操作的元素,包括开始的那个元素
- 可以添加很多个元素
- 添加是在开始的元素前面添加的
sort() 数组排序
定义: sort()方法对数组元素进行排序,并返回这个数组。
参数可选: 规定排序顺序的比较函数。
默认情况下sort()方法没有传比较函数的话,默认按字母升序,如果不是元素不是字符串的话,会调用toString()方法将元素转化为字符串的Unicode(万国码)位点,然后再比较字符。
var a = ["Banana", "Orange", "Apple", "Mango"];
a.sort(); // ["Apple","Banana","Mango","Orange"]
数字排序的时候 因为转换成Unicode字符串之后,有些数字会比较大会排在后面
var a = [10, 1, 3, 20,25,8];
console.log(a.sort()) // [1,10,20,25,3,8];
比较函数的两个参数:
sort的比较函数有两个默认参数,要在函数中接收这两个参数,这两个参数是数组中两个要比较的元素,通常我们用 a 和 b 接收两个将要比较的元素:
- 若比较函数返回值<0,那么a将排到b的前面;
- 若比较函数返回值=0,那么a 和 b 相对位置不变;
- 若比较函数返回值>0,那么b 排在a 将的前面; sort排序常见用法:
- 数组元素为数字的升序、降序:
var array = [10, 1, 3, 4,20,4,25,8];
升序 a-b < 0 a将排到b的前面,按照a的大小来排序的
比如被减数a是10,减数是20 10-20 < 0 被减数a(10)在减数b(20)前面
array.sort(function(a,b){
return a-b;
});
console.log(array); // [1,3,4,4,8,10,20,25];
降序 被减数和减数调换了 20-10>0 被减数b(20)在减数a(10)的前面
array.sort(function(a,b){
return b-a;
});
console.log(array); // [25,20,10,8,4,4,3,1];
2.数组多条件排序
array.sort(function(a,b){
if(a.id === b.id){// 如果id的值相等,按照age的值降序
return b.age - a.age
}else{ // 如果id的值不相等,按照id的值升序
return a.id - b.id
}
})
// [{"id":2,"age":8},{"id":5,"age":4},{"id":6,"age":10},{"id":9,"age":6},{"id":10,"age":9},{"id":10,"age":2}]
pop() 删除一个数组中的最后的一个元素
定义: pop() 方法删除一个数组中的最后的一个元素,并且返回这个元素。
let a = [1,2,3];
let item = a.pop(); // 3
console.log(a); // [1,2]
shift() 删除数组的第一个元素
定义: shift()方法删除数组的第一个元素,并返回这个元素。
let a = [1,2,3];
let item = a.shift(); // 1
console.log(a); // [2,3]
push() 向数组的末尾添加元素
定义:push() 方法可向数组的末尾添加一个或多个元素,并返回新的长度。
参数: item1, item2, ..., itemX ,要添加到数组末尾的元素
let a = [1,2,3];
let item = a.push('末尾'); // 4
console.log(a); // [1,2,3,'末尾']
unshift()
定义:unshift() 方法可向数组的开头添加一个或更多元素,并返回新的长度。
参数: item1, item2, ..., itemX ,要添加到数组开头的元素
let a = [1,2,3];
let item = a.unshift('开头'); // 4
console.log(a); // ['开头',1,2,3]
reverse() 颠倒数组中元素的顺序
定义: reverse() 方法用于颠倒数组中元素的顺序。
let a = [1,2,3];
a.reverse();
console.log(a); // [3,2,1]