我有以下jQuery脚本:
var greetingsArray = [
"Hello, Debbie!",
"Hello, Randy!",
"Hello, Carl!" ,
"Hello, Patrick!",
"Hello, Susan!",
"Hello, Susan!",
"Hello, Carl!"
];
$.uniqueSort(greetingsArray);
有没有办法获取从阵列中删除的项目?如果是这样,它将如何用于显示显示这些值的消息?
例如,我有以下HTML:
<div id="greetings"></div>
我想使用以下jQuery脚本在该div元素中显示已删除的重复问候语:
var greetingsRemoved = ...;
$("#id").html("Removed the following duplicate greetings: " + greetingsRemoved);
我可以用什么来代替...来实现这一目标?我希望这既不困难也不复杂。
答案 0 :(得分:1)
尽管使用jQuery.uniqueSort()执行此操作可能是一件坏事,因为API文档中的描述中所述的原因,出于某种原因,它的工作原理如下:
只是测试:请勿使用此示例!
var greetingsArray = [
"Hello, Debbie!",
"Hello, Randy!",
"Hello, Carl!" ,
"Hello, Patrick!",
"Hello, Susan!",
"Hello, Susan!",
"Hello, Carl!"
];
var sortedArray = greetingsArray.slice().sort();
var greetingsDuplicate = [];
for (var i = 0; i < greetingsArray.length - 1; i++) {
if (sortedArray[i + 1] == sortedArray[i]) {
greetingsDuplicate.push(sortedArray[i]);
}
}
$("#duplicate").html("Duplicate Greetings: " + greetingsDuplicate.join(", "));
$.uniqueSort(greetingsArray);
$("#unique").html("Unique Greetings: " + greetingsArray.sort().join(", "));
&#13;
<div id="unique"></div>
<div id="duplicate"></div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
&#13;
但是,有一种更好的方法可以通过实施从here和here提供的答案派生的方法来实现这一目标,而不是更准确地显示您想要的结果。
实际答案
var greetingsArray = [
"Hello, Debbie!",
"Hello, Randy!",
"Hello, Carl!" ,
"Hello, Patrick!",
"Hello, Susan!",
"Hello, Susan!",
"Hello, Carl!"
];
var greetingsUnique = [];
$.each(greetingsArray, function(index, value){
if($.inArray(value, greetingsUnique) === -1) greetingsUnique.push(value);
});
$("#unique").html("Unique Greetings: " + greetingsUnique.sort().join(", "));
var sortedArray = greetingsArray.slice().sort();
var greetingsDuplicate = [];
for (var i = 0; i < greetingsArray.length - 1; i++) {
if (sortedArray[i + 1] == sortedArray[i]) {
greetingsDuplicate.push(sortedArray[i]);
}
}
$("#duplicate").html("Duplicate Greetings: " + greetingsDuplicate.join(", "));
&#13;
<div id="unique"></div>
<div id="duplicate"></div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
&#13;