js、jquery 数组使用
定义一个数组
var arr = [];
一、js数组
1、数组添加元素:
1.1给数组末尾添加元素:
arr.push("a");
arr[arr.length] = "a";
1.1向数组开头添加一个或更多元素:
arr.unshift("a");
2、数组删除元素:
2.1删除数组末尾最后一个元素
arr.pop();
2.2删除数组开头第一个元素
arr.shift();
2.3根据元素值删除该元素
arr.splice($.inArray("a", arr), 1); // 使用到了jq
3、splice的用法
arr.splice(index, num, newitem1, newitem2, ...)
index:第几位
num:从第index位删除后几位
newItem:删除之后添加的元素
4、字符串与数组之间的转换:
4.1字符串转化成数组
var str = "a,b,c";
arr = str.split(",");
4.2数组转化字符串
var str = arr.join("-") // -为字符串连接符
5、数组排序
5.1sort 正序
var a = [6, 2, 3, 'a', 'x', 20],
b = a.sort(); // b和a指向同一个数组
5.2reverse 倒序
b = a.reverse();
6、取出数组部分元素
b = a.slice(0, 2); //下标从0取到2(不包括2),没有第二个参数则默认到末尾。第一个参数为负表示从末尾开始数。第一个参数小于第二个参数则为空。
//b是a一部分的副本,a本身不变
7、数组合并
var a = [1, 2, 3],
b = [4, 5, 6],
c;
c = b.concat(a); //将a加在b上,返回新数组,a和b并没有变。参数数量不限
console.log(b);
console.log(c);
二、jq数组
1、遍历
$.each(a, function(key, val) { //以jQuery对象的方法调用,兼容性好;也可以用$(a)将a转化为jquery对象,然后以$(a).each(function(){})的形式调用,下面的方法同
console.log(a[key] + '下标为' + key + '值为' + val);
});
2、筛选
var a = [1, 2, 3, 4];
$.grep(a, function(val, key) { //不能链式调用,返回[],所以可以加上return实现链式,返回满足条件的副本
if (a[key] > 2) {
console.log(key);
}
return val;
});
常用做获取两个数组中相同(或不相同)的部分
var a= [1, 2, 3, 4],
b=[1,3,5,7];
$.grep(a,function(val,key){
if(b.indexOf(val)>=0){
return val;
}
},false);
3.转换
var a = [1, 2, 3, 4];
$.map(a, function(val, key) { //不能链式调用,返回[],同grep加上return即可放回副本
if (a[key] > 2) {
a[key]=val+1;
}
return val; //可以链式调用,返回处理后的数组(也可用于筛选)
});
4.合并
var a=[1,2,3],
b=[4,5,6];
$.merge(a,b);
5.过滤相同元素
var a = [ 1 , 1 , 2 , 3 , 7 , 4 , 5 , 5 , 6 , 6 ];
$.unique(a)
6.判断
var a = [1, 2, 3, 4];
$.inArray(2, a); //有的话返回下标,没有的话返回-1