javascript基本的数组方法
/*
* javascript基本的数组方法
*/
//合并
var a = [1,2,3,4];
var b = new Array(5);
a.join(); // 返回"1,2,3,4" | a不变
a.join("-"); // 返回"1-2-3-4"
b.join("+"); // 返回"+++++"
//翻转
a.reverse(); // -> a = [3,2,1]
//排序
var rand = ["DOM","app","Bug","cat"];
rand.sort(); // -> rand = ["Bug","DOM","app","cat"] 按首字母排序
rand.sort(function(a, b) { //自定义比较函数
var s = a.toLowerCase(); //全转成小写
var t = b.toLowerCase(); //即排序时忽略大小写
if (s < t) return -1; //返回负值表示第一个参数放在前面
if (s > t) return 1; //返回正值表示第一个参数放在后面
return 0;
}); // -> rand = ["app","Bug","cat","DOM"]
//连接数组
a.concat(7, 5, 6); // -> a = [1,2,3,4,7,5,6]
a.concat([7,5,6]); // -> a = [1,2,3,4,7,5,6]
a.concat([7, [5,6]], 8); // -> a = [1,2,3,4,7,[5,6],8]
//返回数组片段
var a = [1,2,3,4];
a.slice(0, 3); // 两个参数表示起止下标,不包含结束下标元素 ->返回[1,2,3] | a不变
a.slice(2); // 缺省第二参数表示到达结尾 -> 返回[3,4]
a.slice(1, -1); //负数下标表示从后往前数,-1表示最后一个 -> 返回[2,3]
a.slice(-3, -2); // -> 返回[2]
//栈操作
a.push('a'); //在数组末尾插入元素,->返回新长度 5 | a = [1,2,3,4,'a']
a.pop(); //删除并返回末端元素 返回'a' | a = [1,2,3,4]
a.shift(); //删除并返回第一个元素 a = [2,3,4]
a.unshift('a', [2, 0]); //在数组首端插入元素(可以是多个),返回新长度
//插入或删除元素
var a = [1,2,3,4,7,5,6];
a.splice(); //第一个参数指定起始位置,第二个参数指定删除元素的个数
a.splice(4); // 返回[7,5,6] | a = [1,2,3,4]
a.splice(1, 2); // 返回[2,3] | a = [1,4]
//从第三个参数开始,表示的都是删除后在当前位置要插入的元素
a.splice(1, 0, 'a', [5,9]); //返回[] | a = [1,'a',[5,9],4]
a.splice(2, 1, '-', {t:'x'}); //返回[5,9] | a = [1,'a','-',{t:'x'},4];
/*
* ECMAScript 5 新增的数组方法
*/
var a = [1,2,3,5,8,13];
//遍历并处理数组
var sum = 0;
a.forEach(function(value) { //forEach中的函数可以有三个参数
sum += value; //分别是:数组元素、索引、数组本身
}); // sum = 32 | a不变
b = a.map(function(x) { //map返回一个数组
return x*x;
}); // b = [1,4,9,25,64,169]
//过滤数组,获取其子集
sub = a.filter(function(x) { //回调函数的参数和forEach/map一样
return (x > 5);
}); // sub = [8,13]
odd = a.filter(function(x, index) {
return index%2 === 1; //返回索引为奇数的元素
}); // odd = [2,5,13]
//对元素做整体判断
a.every(function(x) { //对所有元素进行判断,都符合条件才返回true
return x > 0;
}); //返回true
a.every(function(x) {return (x%2==1)}); //返回false
a.some(function(x) { //只要有一个元素满足就返回true
return (x%2==1);
}); //返回true
a.some(function(x) {return x < 0;}); //返回false
//数组的累积运算
//第一个参数是回调函数,第二个参数是初始值,将传给回调函数的第一个参数
var p = a.reduce(function(x, y) { //回调函数第2-4个参数分别是:
return x*y; //数组元素、索引、数组本身
}, 1); //计算a的累乘 p = 3120
var max = a.reduceRight(function(x, y) { //按照从右往左的方向计算
return (x>y) ? x : y; //返回最大值
}); // max = 13
//获取下标
a.indexOf(8); //获取8第一次出现的下标,返回4
a.lastIndexOf(8); //获取8最后一次出现的下标,返回4