2016-11-04 11 views
0

I次のjQueryスクリプトを持っている:jQuery.uniqueSort()から削除された項目を変数に格納する方法はありますか?

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

、しかし...あなたはあなた自身のjQuery.uniqueSortメソッドを実装する必要があります。 –

+3

しかし...実際にあなたのためにメソッドが実際に働いていますか?それはおそらく文字列/数値の配列で動作しません... dom要素の配列だけです。 –

+0

複製された配列内のすべての要素を検索することについては、多くの疑問があります。 'greetingsRemoved'を記入するには、これらのメソッドの1つを使用します。 – Barmar

答えて

1

それはおそらく何らかの理由で、理由はAPIドキュメント内の説明で述べた理由のこれを行うためにjQuery.uniqueSort()を使用することは悪いことではあるが意図したように、次のように、それは動作します:

ちょうどテストします。Doをこの例は使用しないでください!

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++) { 
 
\t if (sortedArray[i + 1] == sortedArray[i]) { 
 
\t \t greetingsDuplicate.push(sortedArray[i]); 
 
\t } 
 
} 
 

 
$("#duplicate").html("Duplicate Greetings: " + greetingsDuplicate.join(", ")); 
 

 
$.uniqueSort(greetingsArray); 
 

 
$("#unique").html("Unique Greetings: " + greetingsArray.sort().join(", "));
<div id="unique"></div> 
 
<div id="duplicate"></div> 
 

 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>

しかし、より正確にあなたが望む結果を表示する代わりにherehereを提供し、両方の回答から得られる方法を実装することにより、これを行うには良い方法があります。

実際の回答もちろん

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++) { 
 
    \t if (sortedArray[i + 1] == sortedArray[i]) { 
 
    \t \t greetingsDuplicate.push(sortedArray[i]); 
 
    \t } 
 
    } 
 
    
 
    $("#duplicate").html("Duplicate Greetings: " + greetingsDuplicate.join(", "));
<div id="unique"></div> 
 
<div id="duplicate"></div> 
 

 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>

関連する問題