[笔记]javascript基本的数组方法

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值