一尘不染

jQuery函数从数组中获取所有唯一元素?

javascript

jQuery.unique允许您获取数组的唯一元素,但是文档说该函数主要供内部使用,并且仅对DOM元素起作用。另一个SO响应说该unique()函数可以在数字上使用,但是此用例不一定是将来的证明,因为在文档中未明确说明。

鉴于此,是否存在“标准”
jQuery函数,用于仅访问数组中的唯一值(特别是整数之类的基元)?(显然,我们可以使用函数构造一个循环each(),但是我们是jQuery的新手,并且想知道是否为此使用了专用的jQuery函数。)


阅读 405

收藏
2020-05-01

共1个答案

一尘不染

您可以array.filter用来返回每个不同值的第一项-

var a = [ 1, 5, 1, 6, 4, 5, 2, 5, 4, 3, 1, 2, 6, 6, 3, 3, 2, 4 ];



var unique = a.filter(function(itm, i, a) {

    return i == a.indexOf(itm);

});



console.log(unique);

如果主要支持IE8或更低版本,请不要使用不受支持的filter方法。

除此以外,

if (!Array.prototype.filter) {
    Array.prototype.filter = function(fun, scope) {
        var T = this, A = [], i = 0, itm, L = T.length;
        if (typeof fun == 'function') {
            while(i < L) {
                if (i in T) {
                    itm = T[i];
                    if (fun.call(scope, itm, i, T)) A[A.length] = itm;
                }
                ++i;
            }
        }
        return A;
    }
}
2020-05-01