Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery $.unique函数存在一些问题_Jquery_Arrays - Fatal编程技术网

Jquery $.unique函数存在一些问题

Jquery $.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> &

我想将node
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);
});