JavaScript之数组对象常用函数
来源:互联网 发布:虚拟试衣软件 编辑:程序博客网 时间:2024/04/29 22:28
数组的空位
读取空位,返回undefined,可以取到length,但不能取到键名。
var arr=[null,,undefined];console.log(arr[0]);//nullconsole.log(0 in arr);//trueconsole.log(arr[1]);//undefinedconsole.log(1 in arr);//falseconsole.log(arr[2]);//undefinedconsole.log(2 in arr);//trueconsole.log(arr.length);//3
Array.isArray()
typeof [] //objecttypeof {} //objecttypeof null //objectArray.isArray([]) //true
Array实例方法
toString()数组转为字符串
join()数组转为字符串,可以添加分隔符
var arr=[1,2,3,[4,5]];arr.toString();//1,2,3,4,5arr.join();//1,2,3,4,5arr.join("|");//1|2|3|4,5
push()在数组末尾添加一个或多个元素,也可用于合并数组。会改变原来的数组。
var arr1=[1,2,3,[4,5]];var arr2=[6,7];[].push.apply(arr1,arr2);console.log(arr1);//[1,2,3,[4,5],6,7]// [].push.call(arr1,arr2);不能用,会变成[1,2,3,[4,5],[6,7]]
pop()在数组末尾删除一个元素,返回该元素,会改变原来的数组。
[].pop() //undefined,空数组用pop()不会报错,返回undefined
concat()合并多个数组,返回新数组,不会改变原来的数组
var arr1=[1,2,3,[4,5]];var arr2=[6,7];console.log(arr1.concat(arr2,arr2));//[1,2,3,[4,5],6,7,6,7]console.log(arr1);//[1,2,3,[4,5]]console.log(1,2);//[1,2,3,[4,5],1,2],可以接受非数组的参数var arr3=arr1.concat();//返回arr1的浅拷贝
shift()删除数组第一个元素,返回该元素,原数组改变
unshift()在数组头添加一个元素或多个元素,返回数组长度,原数组改变
var arr=[3,4,5];console.log(arr.shift());//3console.log(arr);//[4,5]console.log(arr.unshift(1,2,3));//5console.log(arr);//[1,2,3,4,5]
reverse()颠倒数组中的元素顺序,返回新数组,原数组也会改变
var arr=[3,4,5];console.log(arr.reverse());//[5,4,3]console.log(arr);//[5,4,3]
slice()截取数组的一部分,返回新数组,原数组不会改变,第一个参数是起始位置,第二个参数是终止位置
splice()删除数组的一部分,添加新元素,原数组会改变,第一个参数是起始位置,第二个参数是删除个数,后面的参数是增添的元素
var arr=[1,2,3,4,5,6];console.log(arr.slice(2,4));//[3,4]console.log(arr);//[1,2,3,4,5,6],原数组不会改变console.log(arr.splice(1,3,'a','b'));//[2, 3, 4]console.log(arr);//[1, "a", "b", 5, 6]
如果slice方法、splice方法的位置参数是负数,则表示倒数计算的位置。
如果只是单纯地插入元素,splice方法的第二个参数可以设为0。
var arr=[1,2,3,4,5,6];console.log(arr.splice(1,0,'a'));//[]console.log(arr);//[1,'a',2,3,4,5,6]
slice方法的一个重要应用,是将类似数组的对象转为真正的数组。
Array.prototype.slice.call(arguments);
sort()排序,冒泡排序,按照字典顺序,原数组会改变,可自定义排序方式。
var arr=[6,5,4,3,2,1];console.log(arr.sort());//[1,2,3,4,5,6]console.log(arr);//[1,2,3,4,5,6]var arr=[1,2,3,4,5];console.log(arr.sort(function(a,b){return b-a;}));//[5,4,3,2,1]console.log(arr);//[5,4,3,2,1]
函数如果返回值大于0,表示第一个元素排在第二个元素后面;其他情况下,都是第一个元素排在第二个元素前面。
map()所有元素调用同一个函数,返回新数组,原数组不改变
var arr=[1,2,3,4,5];console.log(arr.map(function(a){return a+1;}));//[2,3,4,5,6]console.log(arr);//[1,2,3,4,5,]console.log(arr.map(function(elem,index,arr){return elem+index+arr.length;}));//[6,8,10,12,14]
map方法不仅可以用于数组,还可以用于字符串,用来遍历字符串的每个字符。但是,不能直接使用,而要通过函数的call方法间接使用,或者先将字符串转为数组,然后使用。
console.log([].map.call(str,function(elem,index,arr){return elem.toUpperCase();}));
map方法还可以接受第二个参数,表示回调函数执行时this所指向的对象。
console.log(arr.map(function(elem){return elem+this.length;},arr));//[6,7,8,9,10]
如果数组有空位,map方法的回调函数在这个位置不会执行,会跳过数组的空位。
forEach()跟map很像,但是一般不用来返回值
forEach方法无法中断执行,总是会将所有成员遍历完。
map方法还可以接受第二个参数,表示回调函数执行时this所指向的对象。
forEach方法会跳过数组的空位。
forEach方法也可以用于类似数组的对象和字符串。
var obj={ num:[1,2,3], name:'abc', print:function(){ this.num.forEach(function(){ console.log(this.name); },this); }}obj.print();
filter()所有元素调用同一个函数,返回true的元素组成新数组,原数组不会改变
var arr=[3,6,8,9,5,2];var res=arr.filter(function(n){return n%2==0;});console.log(res);//[6,8,2]console.log(arr);//[3,6,8,9,5,2]
filter方法还可以接受第二个参数,指定测试函数所在的上下文对象(即this对象)。
reduce()和reduceRight()依次处理每个元素,最后累计为一个值
数组元素求和
var arr=[3,6,8,9,5,2];var res=arr.reduce(function(a,b){ return a+b;});console.log(res);//33
也可以指定累计的初值:
var arr=[3,6,8,9,5,2];var res=arr.reduce(function(a,b){ return a+b;},10);console.log(res);//33
reduce是从左到右处理,reduceRight是从右到左处理。
indexOf()和lastIndexOf()返回元素第一次出现的位置和最后一次出现的位置
var arr=[3,6,8,9,6,2];console.log(arr.indexOf(6));//1console.log(arr.lastIndexOf(6));//4
如果数组中包含NaN,这两个方法不适用,即无法确定数组成员是否包含NaN。
1 0
- JavaScript之数组对象常用函数
- javascript之数组对象与数组常用方法
- JavaScript 常用数组函数
- JavaScript 函数 对象 数组
- javascript对象之javascript数组
- javascript 创建 数组,对象,函数
- JavaScript的数组,函数,对象
- JavaScript对象的常用函数
- javascript 函数 Date对象 数组对象
- JavaScript对象之数组Array
- javascript之遍历数组对象
- javascript之对象数组排序
- Javascript学习之常用对象
- JavaScript数组对象常用操作汇总
- javascript之Array 对象(数组对象)
- javascript本地对象之数组对象
- JavaScript对象概述之常用内置对象
- PHP常用函数之-数组
- ubuntu配置java环境变量
- QT Creator使用design修改ui界面后运行未更新问题暴力解决方案
- Android JNI入门第七篇——C调用Java
- 欢迎使用CSDN-markdown编辑器
- Android WebView那些坑之上传文件
- JavaScript之数组对象常用函数
- android stdio使用时遇到的一些困难
- Handler实现每n秒一次的无线循环
- OpenGL 几何着色器 传入点,绘制三角形
- 死锁的原因分析和避免办法
- POJ 2924 Gauß in Elementary School G++
- 上传本地代码到github
- Delphi
- python 使用pytesseract图片文字识别