确定第一个参数在数组中的位置, 从0开始计数(如果没有找到则返回 -1 ).记得indexOf()方法了吗? indexOf()返回字符串的首次出现位置,而$.inArray()返回的是传入参数在数组中的位置,同样的,如果找到的,返回的是一个大于或等于0的值,若未找到则返回-1.现在, 知道怎么用了吧. 有了它, 判断某个值是否存在于数组中,就变得轻而易举了.
复制代码 代码如下:
//返回元素在数组中的位置,0为起始位置,返回-1则未找到该元素
console.log($.inArray('javascript', arr));
测试程序:
[code]
//$.inArray判断值是否在数组中,不存在返回-1,存在则返回对应索引值
$('input#js_inarray').click(function(){
var _exist=$.inArray('芒果',fruit);
var _inexistence=$.inArray('榴莲',fruit)
if(_exist>=0){
alert('芒果 存在于数组fruit中,其在数组中索引值是: '+_exist);
}
if(_inexistence< 0){
alert('榴莲 不存在于数组fruit中!,返回值为: '+_inexistence+'!');
}
});
$.merge(first,second)合并两个数组
返回的结果会修改第一个数组的内容——第一个数组的元素后面跟着第二个数组的元素. 这个方法是用jQuery的方法替代原生concat()方法, 但功能并没有concat()强大, concat()可以同时合并多个数组.
复制代码 代码如下:
var frontEnd = ['javascript', 'css', 'html'],
backEnd = ['java', 'php', 'c++'];
// 这种方式会修改第一个参数, 即frontEnd数组
temp = $.merge(frontEnd, backEnd);
console.dir(temp);
console.dir(frontEnd);
// 可以用下面的方式来避免对原数组的影响
// $.merge($.merge([], frontEnd), backEnd);
测试程序
复制代码 代码如下:
//$.merge()合并两个数组
$('input#js_merge').click(function(){
//原生concat()可能比它还简洁点
fruitNew=$.merge(fruit,['水蜜桃','火龙果','西瓜','杨桃','荔枝','龙眼'])
alert('合并后新数组长度为: '+fruitNew.length+'. 其值为: '+fruitNew);
});
$.unique(array)过滤数组中重复元素
删除数组中重复元素. 只处理删除DOM元素数组,而不能处理字符串或者数字数组.第一次看到这个方法,觉得这是个很便捷的方法, 可以过滤重复, 哈, 多完美, 但仔细一看, 仅限处理DOM元素. 功能8折了.所以, 我给它定义成了一个不常用的元素, 至少, 我用jQuery以来没用到过它.
复制代码 代码如下:
<div>blahblahblah....</div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
// $.unique只支持DOM元素数组,去除重复DOM元素,不支持其他类型数组(String或者Number)
// 获得原始的DOM数组,而不是jQuery封装的
var divs = $('div').get();
// 增加几个class为dup的div
divs = divs.concat($('div.dup').get());
console.log("before unique:" + divs.length);
divs = $.unique(divs);
console.log("after unique:" + divs.length);
测试程序:
复制代码 代码如下:
//$.unique()过滤数组中重复元素(仅限DOM元素数组)
$('input#js_unique').click(function(){
var _h2Arr=$.makeArray(h2obj);
//将数组_h2Arr重复一次
_h2Arr=$.merge(_h2Arr,_h2Arr);
var _curLen=_h2Arr.length;
_h2Arr=$.unique(_h2Arr);
var _newLen=_h2Arr.length;
alert('数组_h2Arr原长度值为: '+_curLen+' ,过滤后为: '+_newLen+' .共过滤 '+(_curLen-_newLen)+'个重复元素');
});
$.makeArray(obj) 将类数组对象转换为数组
将类数组对象转换为数组对象, 类数组对象有 length 属性,其成员索引为0至 length-1.这是个多余的方法, 无所不能的$本来就包含了这个功能. jQuery官网上解释的非常模糊. 其实, 它就是将某个类数组对象(比如用getElementsByTagName获取的元素对象集合)转换成数组对象.
首先什么是类数组对象?jQuery官网上用divs = getElementsByTag('div')来做例子,这个divs有类似数组的一些方法比如length,通过[index]方式获取元素等,然后通过$.makeArray(divs)使它转为数组,就可以用数组的其他功能,比如reverse(), pop()等。
复制代码 代码如下: