Jquery $.unique函数存在一些问题
我想将nodeJquery $.unique函数存在一些问题,jquery,arrays,Jquery,Arrays,我想将nodediv元素转换为array元素,然后如果存在相同的数组,我想去掉它们。我到底在哪里犯错? 多谢各位 jQuery var div = $('div').get(); var arr = $.makeArray(div); var rev = $.unique(arr); $(rev).appendTo('body'); HTML <div>1</div> <div>1</div> <div>2</div> &
div
元素转换为array
元素,然后如果存在相同的数组,我想去掉它们。我到底在哪里犯错?
多谢各位
jQuery
var div = $('div').get();
var arr = $.makeArray(div);
var rev = $.unique(arr);
$(rev).appendTo('body');
HTML
<div>1</div>
<div>1</div>
<div>2</div>
<div>3</div>
<div>3</div>
<div>3</div>
1
1.
2.
3.
3.
3.
您的错误是假定
$.unique
根据元素的内容对元素进行比较
而它只是从选择中删除完全相同的节点
例如,当您使用.add()
将一个选择集与另一个选择集连接起来时,可能会发生这种情况
UPD:我能想到的最简单的解决方案是
对DOM元素数组进行适当排序,删除重复项。请注意,这仅适用于DOM元素数组,而不适用于字符串或数字。
-它检查两个元素是否相等
var div = $('div');
var values = [];
div.each(function() {
var $i = $(this),
value = $i.text();
if (values.indexOf(value) != -1) {
$i.remove();
return;
}
values.push(value);
});