js中数组实用方法
shift用法和unshit用法
var colors = [ 'red', 'blue' ]; var item = colors.shift(); alert(item); //'red' alert(colors.length); // 1
var colors = ['red','blue']; var count = colors.unshift('green','back'); alert(count); //4 alert(colors.join(',')); // 'back','green','red','blue'
sort用法
sort方法默认按照元素内内首个字符的ascii码值升序排序的
var arr = [5,1,4,11,2].sort(); console.log(arr); //[1, 11, 2, 4, 5]
如要实现完整的数组元素值按升序排列,则应传递一个处理函数
function compare(val1, val2) { if(val1 < val2){ return -1; }else if(val1 > val2){ return 1; }else{ return 0; } }; var values = [5, 1, 11, 2]; values.sort(compare); console.log(values); // [1, 2, 5, 11]
concat用法
var a =[1, 2]; a.concat(3, [4, 5]); console.log(a);//[1,2,3,4,5];
slice用法
slice函数操作后不影响原素组
var colors = ['red', 'green', 'blue']; var colors2 = colors.slice(1); // ['green', 'blue']; var colors3 = colors.slice(1, 2); // ['green']; console.log(colors); // ['red', 'green', 'blue'];
tips:如果slice方法中的参数有一个负数,则用数组长度加上该值确定相应的位置值
如数组长度为5时, slice.(-2, -1) 等价于 slice(3, 4);
巧妙使用改特性获取数组中特定后几位元素
var a = [1,2,3,4,5,6,7]; var b = a.slice(4); //[4,5,6,7]
splice用法
删除功能: 指定两个参数, 要删除的第一项的位置和要删除的项数
var colors = ['red', 'green', 'blue']; var removed = colors.splice(0,1); alert(colors); // 'green', 'blue' alert(removed); // 'red'
插入功能:指定3个参数:起始位置、0(要删除的项数),要插入的项
removed = colors.splice(1, 0, 'yellow', 'orange'); //从位置1开始插入两项 alert(colors); // green, yellow, orange, blue alert(removed); //返回的是一个空数组
替换功能:指定3个参数:起始位置、要删除的项数,要插入的项
removed = colors.splice(1, 1, "red", "purple"); //插入两项,删除一项 alert(colors); //green,red,purple,orange,blue alert(removed); //yellow 返回的数组中只包含一项
迭代方法
every:对数组中的每一项运行给定函数,如果该函数对每一项都返回true,则返回true,
some:对数组中的每一项运行给定函数,如果该函数对任意一项返回true,则返回true,
forEach:对数组中的每一项执行某些操作
filter: 对数组中的每一项运行给定函数,返回该函数会返回true的项组成的数组
map:对数组中的每一项运算给定函数,返回每次函数调用的结果组成的数组
var number = [1,2,3,4,5,4,3,2,1]; var everyResult = numbers.every(function(item,index,array){ return item > 2; }) alert(everyResult); // false; var someResult = numbers.every(function(item,index,array){ return item > 2; }) alert(someResult); //true; numbers.forEach(function(item,index,array){ //执行某些操作 }) var filterResult = numbers.filter(function(item,index,array){ return item > 2; }) alert(filterResult); //[3,4,5,4,3]; var mapResult = numbers.map(function(item,index,array){ return item * 2; }) alert(mapResult); //[2,4,6,8,10,8,6,4,2];