JS中的内置对象
- Array
- String
- Math
- Date
Array
每一项都可以保存任意类型的数据。
数组的大小或者说长度,是可以动态调整的。
创建
2种方法:
1. 使用Array构造函数
语法: new Array()
()内可以填写预设的**参数个数**,或者预设的**参数项名称**。
<br>
**实例:**
var colors = new Array(10) ;
var str = new Array(参数项1, 参数项2, 参数项3);
2. 数组字面量
语法: var 变量名 = ["参数项1", "参数项2", "参数项3"]
数组读写
读取和设置时,使用方括号[ ]并加上相应索引。
注意:索引从0开始。
实例:
var colors = ["red", "blue", "green"];
//这是读取
console.log(colors[1]);
//这是写入
colors[3] = "orange";
数组长度
语法:array.length
返回值: number
实例1:
var colors = ["red", "blue", "green"];
console.log(colors.length); //3
也可以从数组末尾移除项
实例2:
var colors = ["red", "blue", "green"];
colors.length = 2;
console.log(colors[2]); //undefined
如果把一个值放在超出数组大小的位置上时,会重新计算长度值,长度值等于最后一项索引加1。
实例3:
var colors = ["red", "blue", "green"];
colors[10] = "white";
console.log(colors.length); // 11
数组的栈方法
- push( )
- unshift( )
- pop( )
- shift( )
push( )
把参数按顺序添加到数组末尾
语法:
arrayObject.push(新参数1,新参数2,...新参数n)
返回值: 新数组的长度(number)
实例:
var colors = ["red", "blue", "green"];
//添加
colors.push("yellow");
console.log(colors);
//返回值
var len = colors.push("yellow");
console.log(len);
unshift( )
把参数按顺序添加到数组开头
语法:
arrayObject.unshift(新参数1,新参数2,...新参数n)
返回值: 新数组的长度(number)
实例:
var colors = ["red", "blue", "green"];
//添加
colors.unshift("yellow");
console.log(colors);
shift( )
删除数组第一个元素
语法:
arrayObject.shift()
返回值: 被删除的那个元素
实例:
var nums = [1,2,3];
var n = nums.shift();
console.log(nums); // [2,3]
pop( )
删除数组最后一个元素
语法:
arrayObject.pop()
返回值: 被删除的那个元素
实例:
var nums = [1,2,3];
var n = nums.pop();
console.log(nums); // [1,2]
数组转换字符串
join( )
把数组中的所有元素放进字符串
语法:
arrayObject.join("字符串分隔符")
如果分隔符不填写,默认是逗号“,”
返回值: 字符串(string)
实例:
var nums = [1,2,3];
var str = nums.join("-");
console.log(str); // 1-2-3
数组重排序
- reverse( )
- sort( )
reverse( )
颠倒数组中元素的顺序
语法:
arrayObject.reverse()
返回值: 数组(array)
实例:
var nums = [1,2,3];
nums.reverse();
console.log(nums); // [3,2,1]
sort( )
对数组元素进行排序
语法:
arrayObject.sort()
sort如果没有参数,默认比较方式是比较首字母、第一个数字大小。
sort( )可以传一个比较函数作为参数。
返回值: 数组(array)
实例:
var arr = [1,2,-3,11,88,9];
//不传参数
arr.sort();
console.log(arr); // [-3, 1, 11, 2, 88, 9]
//比较函数——降序
arr.sort(function(a,b){return a < b});
console.log(arr); // [88, 11, 9, 2, 1, -3]
//比较函数——升序
arr.sort(function(a,b){return a > b});
console.log(arr); // [-3, 1, 2, 9, 11, 88]
多数组合并
concat( )
语法:
arrayObject.concat(数组1,数组2,...数组n)
返回值: 数组(array)
实例:
var arr1 = ["1","2","3"];
var arr2 = ["a","b","c"];
arr3 = arr1.concat(arr2);
console.log(arr3); // ["1", "2", "3", "a", "b", "c"]
选取特定数组元素
slice( )
语法:
arrayObject.slice(开始下标,结束下标)
参数:
开始下标(必需) 从何处开始选取;如果是负数,用它加上数组长度,便是开始下标。
结束下标(可选) 从何处结束选取
实例:
var arr = ["1","2","3","4","5"];
var newArr = arr.slice(1,3);
console.log(newArr); // ["2","3"]
//负数
var newArr = arr.slice(-3,3); //相当于(2,3)
console.log(newArr); // ["3"]
扩展 —— b数组拷贝a数组
1. 遍历,push
b = new Arr();
for (var i = 0; i<a.length; i++){
b.push(a[i]);
}
2. concat()
b = [].concat(a);
3. slice( )
b = a.slice(0);
splice( )
1. 删除数组
从索引处开始删除零个或多个元素。
语法:
arrayObject.splice(索引,个数)
如果个数为0,不会删除元素;
如果不设置,则删除所有元素。
返回值: 被删除元素 组成的的数组
实例:
var arr = ["a","b","c"];
//返回值
var newArr = arr.splice(0,2);
console.log(newArr); // ["a","b"]
consloe.log(arr); // ["c"]
2. 插入数组
从指定位置插入值
如填写索引为3,就在3那个位置上插入新增项。
语法:
arrayObject.splice(开始下标,删除个数,插入项1,...插入项n)
如果不删除,删除个数要设为0。
返回值: 被删除元素 组成的的数组
实例:
var arr = ["a","b","c"];
var insertArr = arr.splice(1,0,"2","3");
console.log(arr); // ["a","2","3","b","c"]
3. 替换数组
在指定位置插入值,同时删除任意数量项。
语法:
arrayObject(开始下标,删除个数,插入项1,...插入项n)
返回值: 被删除元素 组成的的数组
实例:
var arr = ["a","b","c"];
var insertArr = arr.splice(1,2,"2","3");
console.log(arr); // ["a","2","3"]
查找索引 (IE9+)
indexOf( )
lastIndexOf( )
indexOf( )
从数组开头查找,查询项第一次出现的下标。
语法:
arrayObject.indexOf(查询项,开始下标)
参数:
查询项:(必需)
开始下标(可选)
返回值: 索引;没找到的话返回-1。 (number)
实例:
var nums = [1,2,3,4,5,2,8,2];
var times = nums.indexOf(2);
console.log(times); // 1
var times = nums.indexOf(2,3);
console.log(times); // 5
lastIndexOf( )
从数组末尾查找,查询项第一次出现的下标。
语法:
arrayObject.indexOf(查询项,开始下标)
参数:
查询项:(必需)
开始下标(可选)
返回值: 索引;没找到的话返回-1。 (number)
实例:
var nums = [1,2,3,4,5,2,8,2];
var times = nums.lastIndexOf(2);
console.log(times); // 7
封装indexOf
function ArrIndexOf(arr,value,startIndex){
if(startIndex){
for(var i = startIndex; i < arr.length; i++){
if(arr[i]==value){
return i;
}
}
}else{
for(var i = 0; i < arr.length; i++){
if(arr[i]===value){
return i;
}
}
}
return -1;
}