请帮助我理解如何使用$.unique()
功能。
来自文档:
在适当的位置对DOM元素数组进行排序,删除重复项。
我正在尝试这段代码:
<h1 class="foo">Headline</h1>
<h1 class="foo">Headline</h1>
<h1 class="foo">Headline</h1>
alert( $.unique($('.foo')).length );
它返回3,但我认为1.我错过了什么?看到使用此功能的一些实践示例会很棒。感谢。
P.S。
我也尝试过几个数字,但得到了一个非常好奇的结果。 以下代码在不同的浏览器中返回不同的值!
$.unique([ 1, 2, 2, 3, 3, 1 ])
答案 0 :(得分:7)
$.unique
仅适用于DOM元素数组。不是其他事物的阵列。
在您的情况下,您有3 <h3>
秒。它们不是相同的DOM元素,因此$.unique
不会删除它们。
<h1 class="foo">Headline</h1>
<h1 class="foo">Headline</h1>
<h1 class="foo">Headline</h1>
alert($.unique($('.foo')).length); // 3
$.unique
适用于可能多次包含相同元素的数组。
<h1 class="foo otherFoo">Headline</h1>
<h1 class="foo">Headline</h1>
var $foo = $('.foo').get();
var $otherFoo = $('.otherFoo').get();
var $e = $foo.concat($otherFoo);
alert($e.length); // 3
alert($.unique($e).length); // 2
另一方面,如果你想让$.unique
排序其他东西,而不仅仅是DOMElements,你可以做这样的事情(取自here):
(function($){
var _old = $.unique;
$.unique = function(arr){
// do the default behavior only if we got an array of elements
if (!!arr[0].nodeType){
return _old.apply(this,arguments);
}
else {
// reduce the array to contain no dupes via grep/inArray
return $.grep(arr,function(v,k){
return $.inArray(v,arr) === k;
});
}
};
})(jQuery);
答案 1 :(得分:4)
$.unique
适用于DOMElements数组,而不是数字,字符串或甚至是jQuery对象。
它由add()
中的jQuery内部使用,以防止将重复项添加到同一个jQuery对象中。这是一个例子:
HTML:
<h1 class="foo">Headline</h1>
<h1 class="foo bar">Headline</h1>
<h1 class="bar">Headline</h1>
使用Javascript:
var foo = $('.foo').get(); // Array of size 2
var bar = $('.bar').get(); // Array of size 2
var myArr = [];
for(var i = 0; i < foo.length; i++)
myArr.push(foo[i]);
for(i = 0; i < bar.length; i++)
myArr.push(bar[i]);
alert(myArr.length); // Outputs 4
alert($.unique(myArr).length); // Outputs 3
如果您使用的是jQuery,那么您应该很少有一个普通的DOME元素Javascript数组。它在jQuery源代码内部最有用。
PS。如果你想从数字/字符串数组中删除重复的条目,我建议在这个问题中使用js158的jQuery解决方案:jQuery function to get all unique elements from an array?
答案 2 :(得分:0)
来自docs page:
的引用请注意,这仅适用于DOM元素的数组,而不适用于字符串或数字。
所以这就是数字不同的原因。
该函数只删除重复的DOM元素,而不是它们的innerHTML
值,以防你想知道的是什么,有例子如何在documentation page上使用它
答案 3 :(得分:0)
答案 4 :(得分:-3)
$.unique(array)
unique is an inbuilt jQuery function to return unique values from an Jaascript array.