jQuery.unique()
的描述状态:
Sorts an array of DOM elements,in place,with the duplicates removed. Note that this only works on arrays of DOM elements,not strings or numbers.
考虑到描述,有人可以解释为什么下面的代码工作?
<div></div> <div></div>
var arr = ['foo','bar','bar']; $.each(arr,function(i,value){ $('div').eq(0).append(value + ' '); }); $.each($.unique(arr),value){ $('div').eq(1).append(value + ' '); });
谢谢
编辑:可能的解决方案:
function unique(arr) { var i,len = arr.length,out = [],obj = { }; for (i = 0; i < len; i++) { obj[arr[i]] = 0; } for (i in obj) { out.push(i); } return out; };
解决方法
它可能工作在数组字符串等,但它没有被设计为使用…
请注意,unique()的代码在Sizzle中隐藏为uniqueSort:github source
虽然一些额外的代码可能看起来像在任何数组上工作,请密切关注sortOrder as defined here.它做了很多额外的工作,把东西放在“文档顺序” – 因此为什么文档说,它应该只使用对DOM元素的数组。