JavaScript之数组对象常用函数
2017-03-02 17:20
525 查看
数组的空位
读取空位,返回undefined,可以取到length,但不能取到键名。var arr=[null,,undefined]; console.log(arr[0]);//null console.log(0 in arr);//true console.log(arr[1]);//undefined console.log(1 in arr);//false console.log(arr[2]);//undefined console.log(2 in arr);//true console.log(arr.length);//3
Array.isArray()
typeof [] //object typeof {} //object typeof null //object Array.isArray([]) //true
Array实例方法
toString()数组转为字符串
join()数组转为字符串,可以添加分隔符
var arr=[1,2,3,[4,5]]; arr.toString();//1,2,3,4,5 arr.join();//1,2,3,4,5 arr.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());//3 console.log(arr);//[4,5] console.log(arr.unshift(1,2,3));//5 console.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));//1 console.log(arr.lastIndexOf(6));//4
如果数组中包含NaN,这两个方法不适用,即无法确定数组成员是否包含NaN。
相关文章推荐
- JQuery操作Javascript对象和数组的工具函数总览
- jquery操作数组和对象的一些常用函数
- JavaScript 函数内的arguments 对象转换为数组
- javascript中数组的多种定义方法和常用函数简介
- JQuery 操作Javascript对象和数组的工具函数小结
- eval函数就是JavaScript用来解释JSON字符串的,把字符串转化为对象、数组、函数或者其它。
- JavaScript基础(基本语法:变量、语句、数组、函数、对象、全局方法以及js与java不同,js与html关联)
- JavaScript 练习,变量,数组,函数,对象, with for 语句
- javascript Array数组对象的扩展函数代码
- php程序员学习javascript:第二章:javascript对象函数(二):数组对象函数
- javascript 创建 数组,对象,函数
- javascript中常用数组函数
- Javascript中的函数,数组和对象
- (3)JavaScript学习笔记 - 函数、对象、数组
- javascript调试必备代码:打印对象或数组函数 vardump()
- 【javascript】数组对象常用 api
- JavaScript中如何判断变量是数组、函数或是对象类型
- javascript用arguments数组对象实现参数变量可变的函数
- JavaScript数组对象常用操作汇总