JS数组
来源:互联网 发布:怎么在美拍加淘宝链接 编辑:程序博客网 时间:2024/06/06 01:37
Array(数组)是javascript中复杂的数据类型,同时,Array也是内建的一个核心类,一个数组就是Array类的一个实例,可以使用Array类的方法和属性操作数组。
需要记住的是,与其他语言相比,javascript数组中的元素不必为相同的数据类型,可以在数组每个元素上混合使用数字、日期、字符串、Object,甚至添加一个嵌套数组。
实质上,Array是一系列项目的集合,其中的项目也被称为元素,可以使用索引来访问。
————《javascript权威指南》
1. 创建数组
1.1 创建数组的方法
Array类的构造方式有三种,分别是:
new Array();
new Array(length);
new Array(element0,element1,element2…elementN);
例如:
var a = new Array();
var b = new Array(3);
var c = new Array(“one”,”two”,”three”);
数组的第一个元素的索引总是0,在使用第2种方法的时候初始长度是固定的,后续添加元素的时候总长度是可以增加的。
另外,也可以使用[]来初始化数组,例如: var array = ["one","two","three","four"];
1.2 数组的属性
- 变长数组
javascript数组的长度可以进行自动扩充,所以如果数组的初始长度确定,后续也可以根据索引值进行添加数据。 - 元素可为空
如果数组中某一个小于元素索引长度的元素未定义,那么就会为该元素自动赋值一个undefined值。
2. 数组常用API
2.1 常用方法
Array类的方法
2.2 方法示例
- every()方法
//检测数组 num 的所有元素是否都大于 18 :var num = [28, 30, 16, 11, 88, 24];var test = num.every(function(element,index,arr){ return element>=18;});document.write(test);
输出结果为: false
2. filter()方法
//检测数组 num 的所有元素是否都大于 18 :var num = [28, 30, 16, 11, 88, 24];var test = num.filter(function(element,index,arr){ return element>=18;});document.write(test);
输出结果为: 28,30,88,24
3. forEach()方法
var num = [28, 30, 16, 11, 88, 24];num.forEach(function(element,index,arr){ arr[index] = index+"==="+element;});document.write(num);
输出结果为: 0===28,1===30,2===16,3===11,4===88,5===24
4. map()方法
//数组 num 的所有元素都加上 18 :var num = [28, 30, 16, 11, 88, 24];var test = num.map(function(element,index,arr){ return element+=18;});document.write(test);
输出结果为: 46,48,34,29,106,42
5. some()方法
//检测数组 num 的所有元素是否存在小于 18 的数:var num = [28, 30, 16, 11, 88, 24];var test = num.some(function(element,index,arr){ return element<18;});document.write(test);
输出结果为: true
注:上述括号内的匿名函数function(element,index,arr),可用于every(),filter(),map(),some(),forEach() 函数中;参数 element 代表当前元素的值,必须要有;参数 index 代表当前元素的索引值,可选;参数 arr 代表当前元素属于的书租对象,可选。
6. isArray()方法
var num = [28, 30, 16, 11, 88, 24];var str = "hi";console.log(Array.isArray(num));console.log(Array.isArray(str));
输出结果为: true
false
7. indexOf() 和 lastIndexOf()方法
var num = [88, 30, 16, 11, 88, 24];console.log(num.indexOf(88));console.log(num.lastIndexOf(88));
输出结果为: 0
4
8. slice()方法
var num = [88, 30, 16, 11, 88, 24];console.log(num.slice(2,5));console.log(num);
输出结果为: Array [ 16, 11, 88 ]
Array [ 88, 30, 16, 11, 88, 24 ]
slice()方法不会改变原数组。
9. splice()方法
var num = [88, 30, 16, 11, 88, 24];num.splice(2,0,"a","b","c");console.log(num);num.splice(2,2);console.log(num);num.splice(2);console.log(num);
输出结果为: Array [ 88, 30, "a", "b", "c", 16, 11, 88, 24 ]
Array [ 88, 30, "c", 16, 11, 88, 24 ]
Array [ 88, 30 ]
语法:array.splice(index,howmany,item1…itemN)
10. join()方法
var num = [88, 30, 16, 11, 88, 24];console.log(num.join("-"));console.log(num.join());
输出结果(默认是以“,”进行连接): 88-30-16-11-88-24
88,30,16,11,88,24
11. sort()方法
* 默认情况下的排序
var num = [88, 30, 2, 16,8, 11, 88, 24];num.sort();console.log(num);
输出结果: Array [ 11, 16, 2, 24, 30, 8, 88, 88 ]
* 自定义排序
指定一个比较函数,那么该函数必须返回以下数值:
1. -1,表示第一个参数比第二个参数小
2. 0,表示两个参数相等
3. 1,表示第一个参数比第二个参数大
var num = [88, 30, 2, 16, 8, 11, 88, 24];num.sort(function(a,b){ return a-b;});console.log(num);
输出结果: Array [ 2, 8, 11, 16, 24, 30, 88, 88 ]
#遗留问题
array数组浅拷贝和深拷贝。
- js数组
- js数组
- JS 数组
- js 数组
- js数组
- JS数组
- js数组
- js 数组
- JS 数组
- js数组
- js 数组
- JS数组
- js数组
- js数组
- js数组
- JS 数组
- js数组
- js 数组
- XUtils
- scala版本kafka createStream
- Scala 学习(四)--- 集合
- oracle数据库中的集合运算 ,索引,视图,伪劣
- SpringMVC中一个Handler(处理器)配置专属的拦截器组
- JS数组
- Linux系统中切换用户身份su与sudo的用法与实例
- Git从本地添加项目到远程仓库
- ubuntu环境变量的三种设置方法
- STL函数 lower_bound / upper_bound
- Zephyr Kernel 设备驱动和设备模型(二)
- 微信小程序微信支付接入开发
- centos7 安装mongodb
- 禁用了ssh的密码认证方式导致无法登陆