js的数组方法整理
2018-06-24 00:51:35来源:未知 阅读 ()
slice
从已有的数组中返回选定的元素。该方法不会修改数组,而是返回一个子数组。
语法:arr.slice(start,end)
start: 必须,规定从何处开始选取。如果是负数,就是从尾部开始算起的位置(-1指最后一个元素,-2指倒数第二个元素);
end: 可选,规定从何处结束选取。如果没有指定,则切分的数组包含从start到数组结束的所有元素。
示例:
1 var arr = [0, 4, 5, 4, 7, 6, 9]; 2 arr.slice(2, 4); //[5,4] 3 arr.slice(-3, 6); //[7,6] 4 arr.slice(5); //[6,9]
可以使用slice快速将伪数组转为数组:
function f() { var arr = Array.prototype.slice.call(arguments); }
splice
向数组中添加或删除项目,并返回被删除的项目。该方法会改变原来的数组。
语法:arr.splice(index,howmany,item1,item2,...,itemX)
index: 必需。规定添加或删除的位置,使用负数可从数组结尾处规定位置;
howmany: 必需。要删除的数量。如果设置为0,则不会删除项目。
itemX: 可选。向数组添加的新项目。
示例:
1 var arr = [0, 4, 5, 4, 7, 6, 9]; 2 console.log(arr.splice(2, 2)); //[5,4] 3 console.log(arr); //[0, 4, 7, 6, 9] 4 console.log(arr.splice(2, 0, 8, 10)); //[] 5 console.log(arr); //[0, 4, 8, 10, 7, 6, 9]
join
将所有元素放入一个字符串,元素是通过指定的分隔符进行分隔的。返回字符串。该方法不会修改原数组。
语法:arr.join(separator)
separator: 可选,指定要使用的分隔符。如果省略,则使用逗号作为分隔符。
示例:
1 var arr = [0, 1, 2, 3]; 2 console.log(arr.join()); //'0,1,2,3' 3 console.log(arr.join('.')); //'0.1.2.3'
push
向数组的末尾添加或删除一个或多个元素,并返回数组的新长度。该方法会改变原数组。
语法:arr.push(newelement1,newelement2,...,newelementX)
newelement1: 必需。要添加到数组的第一个元素。
newelementX: 可选,可添加多个元素。
示例:
1 var arr = [0, 1, 2, 3]; 2 console.log(arr.push(1)); //5 3 console.log(arr); //[0, 1, 2, 3, 1]
pop
删除数组的最后一个元素,并返回它删除的元素的值。如果数组已经是空,则不改变数组,并返回undefined。该方法会改变原数组。
语法:arr.pop()
示例:
1 var arr = [0, 1, 2, 3]; 2 console.log(arr.pop()); //3 3 console.log(arr); //[0, 1, 2]
shift
删除数组的第一个元素,并返回它删除元素的值。如果数组已经是空,则不改变数组,并返回undefined。该方法会改变原数组。
语法:arr.shift()
示例:
1 var arr1 = [0, 1, 2, 3]; 2 console.log(arr1.shift()); //0 3 console.log(arr1); //[1, 2, 3] 4 5 var arr2 = []; 6 console.log(arr2.shift()); //undefined 7 console.log(arr2); //[]
unshift
向数组的开头添加或删除一个或多个元素,并返回数组的新长度。该方法会改变原数组。
语法:arr.unshift(newelement1,newelement2,...,newelementX)
newelement1: 必需。要添加到数组的第一个元素。
newelementX: 可选,可添加多个元素。
示例:
1 var arr = [0, 1, 2, 3]; 2 console.log(arr.unshift(4, 5)); //6 3 console.log(arr); //[4, 5, 0, 1, 2, 3]
reverse
颠倒数组中元素的顺序。该方法会改变原来数组。
语法:arr.reverse()
示例:
1 var arr = [0, 1, 2, 3]; 2 console.log(arr.reverse()); //[3, 2, 1, 0] 3 console.log(arr); //[3, 2, 1, 0]
sort
对数组的元素进行排序。该方法会改变原数组。
语法:arr.sort(sortby)
sortby: 可选。规定排序顺序。必须是比较函数,有两个参数a和b,如果a小于b,在排序后a应该出现在b之前(从小到大排),则返回一个小于0的值。如果没有参数,则按照字符编码顺序对数组中的元素进行排序。
示例:
1 var arr1 = ['a', 'b', 'z', 'A', 'Z']; 2 console.log(arr1.sort()); //["A", "Z", "a", "b", "z"] 3 console.log(arr1); // ["A", "Z", "a", "b", "z"] 4 5 var arr2 = [1, 5, 10, 1000]; 6 console.log(arr2.sort()); //[1, 10, 1000, 5] 7 8 function sortNumber1(a, b) { 9 return a - b; 10 } 11 function sortNumber2(a, b) { 12 return b - a; 13 } 14 console.log(arr2.sort(sortNumber1)); //[1, 5, 10, 1000] 15 console.log(arr2.sort(sortNumber2)); //[1000, 10, 5, 1]
concat
连接两个或多个数组。返回被连接数组的一个副本。该方法不会修改原来的数组。
语法:arr.concat(arrX,arrX,...,arrX)
arrX: 必需。可以是具体的值,也可以是数组对象,可以是任意多个。
示例:
1 var arr1 = [1, 2, 3]; 2 console.log(arr1.concat(4, 5)); //[1, 2, 3, 4, 5] 3 console.log(arr1); //[1, 2, 3] 4 5 var arr2 = [4, 5]; 6 console.log(arr1.concat(arr2)); //[1, 2, 3, 4, 5] 7 8 var arr3 = [6, [7, 8]]; 9 console.log(arr1.concat(arr2, arr3)); // [1, 2, 3, 4, 5, 6, [7, 8]] 10 console.log(arr1.concat(arr2, 6, [7, 8])); //[1, 2, 3, 4, 5, 6, 7, 8]
map
返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。
语法:arr.map(function(currentValue, index, arr), thisValue)
function(currentValue,index,arr):必须。函数,数组中的每个元素都会执行这个函数。
函数参数:currentValue:必须。当前元素的值。
index:可选。当前元素的索引值。
arr:可选。当前元素属于的数组对象。也就是数组本身。
thisValue:可选。对象作为该执行回调时使用,传递给函数,用做“this”的值。
示例:
求数组中每个元素的平方根。
var numbers = [1, 4, 9]; var roots = numbers.map(Math.sqrt); console.log(roots); //[1, 2, 3]
反转字符串
var str = '12345'; console.log(Array.prototype.map.call(str, function (x) { return x; }).reverse().join('')); //'54321'
通常情况下,map方法中回调函数只需要接受一个参数,就是正在被遍历的数组元素本身。但这并不意味着只给回调函数传了一个参数。例如:
console.log(['1', '2', '3'].map(parseInt)); //[1, NaN, NaN] //上面的语句并没有返回所期望的[1, 2, 3], //通常使用parseInt时只需要传递一个参数,但实际上可以有两个参数,第二个参数是进制数。 //map方法在调用回调函数时,会给它传递三个参数:当前正在遍历的元素,元素索引和原数组。 //parseInt会把第三个参数忽视,但第二个参数会被当成进制数,从而返回了NaN //如果想得到所期望的结果,可以这样写 function returnInt(ele) { return parseInt(ele, 10); } ['1', '2', '3'].map(returnInt); //[1, 2, 3] //也可以使用简单的箭头函数 ['1', '2', '3'].map(str=>parseInt(str)); //[1, 2, 3]
兼容性:IE9以下不支持。
兼容性解决代码:
if (!Array.prototype.map) { Array.prototype.map = function (callback, thisArg) { //判断callback是否为函数类型 if (Object.prototype.toString.call(callback) != '[object Function]') { throw new TypeError(callback + 'is not a function'); } else { if (this == null) { //判断map方法的调用者是否存在 throw new TypeError('this is null or not defined') } else { var arr = Object(this); //调用map方法的数组 var len = arr.length >>> 0; //数组长度 var k = 0; var mappedArr = new Array(len); //map方法新产生的数组 while (k < len) { //遍历原数组,调用回调函数 if (k in arr) { mappedArr[k] = callback.call(thisArg, arr[k], k, arr); } k++; } return mappedArr; } } } }
toString
将数组转换为字符串并返回结果。返回值与没有参数参与的join()方法返回的字符串相同。
语法:arr.toString()
示例:
1 var arr=[1,2,3]; 2 console.log(arr.toString()); //'1,2,3'
valueOf
返回数组对象的原始值。
语法:arr.valueOf()
示例:
1 var arr=[1,2,3]; 2 console.log(arr.valueOf()); //[1, 2, 3]
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:表格滚动分页
下一篇:javaScript字符串方法
- Jquery插件写法笔记整理 2020-03-29
- js实现翻页后保持checkbox选中状态的实现方法 2020-03-25
- NiftyCube实现圆角边框的方法 2020-03-20
- 根据分辨率调用css文件的方法 2020-03-19
- JS简单去除数组中重复项的方法 2020-03-16
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash