簡體   English   中英

檢查多個輸入是否具有相同值的最佳方法

[英]Best way to check if several inputs have the same value

我有一些輸入(隨機數> 0),每個輸入都在具有相同類的div中,因此我具有以下結構:

<div class="myclass"> <!-- div #1 -->
    <input name="name" class="input">
    <!-- other inputs that don't take care -->
</div>
...
<div class="myclass"> <!-- div #n -->
    <input name="name" class="input">
    <!-- other inputs that don't take care -->
</div>

我需要檢查每個輸入的值是否與其他輸入不匹配,因此如果我在第一個輸入中將myname作為輸入n中的值,那么我將沒有myname

我有下一個JQuery代碼遍歷所有div,以提取有關每個div的信息。

$('.myclass').each(function() {
    input = $(this).find('input[name="name"]').val();
});

然后,它將所有信息(以前解析過的JSON)通過jQuery ajax發送到PHP腳本,這些腳本必須重新驗證輸入值是否相等。

因此,問題是:遍歷所有div並知道值是否重復的最佳方法是什么? 我考慮過要在每個元素內部制作一個$ .each,我必須遍歷所有元素,但是我不知道它的性能。

那么使用PHP腳本呢,負擔得起的最佳方法是什么? 謝謝。

注意 :JSON解析的數組,現在具有以下結構:

{"user_info":{"app_id":0,"user_id":0},"contact":{"has_contact":0},"menu_items":[{"position":0,"name":"Nosotros","icon_id":"ic_delete_black_48dp.png","content":"nosotros"},{"position":1,"name":"Precios","icon_id":"ic_help_black_48dp.png","content":"nosotros"}]}

不用擔心“ user_info”和“ has_contact”無關緊要,我正在談論的名稱是menu_items [index] ['name']值。

您可以使用$.map() .slice() $.unique() .length

 // return `input` values var inputs = $.map($(".myclass input"), function(el) {return el.value}); // check if `unique` array `.length` is equal to `unique` array `.length` var unique = $.unique(inputs.slice(0)).length === inputs.length; console.log(inputs, unique); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div class="myclass"> <!-- div #1 --> <input name="name" class="input" value="abc"> <!-- other inputs that don't take care --> </div> ... <div class="myclass"> <!-- div #n --> <input name="name" class="input" value="abc"> <!-- other inputs that don't take care --> </div> 

做到這一點的另一種方法(未顯示代碼示例...)是創建一個哈希,其中每個接收到的值如果它是字符串或可以明確地強制轉換為一個...)是鍵,而不要-護理價值就是價值。

從空哈希開始。 對於每個輸入,請測試哈希中是否已存在與該輸入匹配的鍵。 如果是這樣,那你就被騙了。 如果不是,請將輸入添加為新鍵。 (關聯的值無關緊要...)檢查所有輸入后,可以丟棄哈希。

(此策略適用於支持哈希的任何編程語言……如今,哈希是“所有哈希”。從原則上講,它也是一種計算特定元素出現次數的有效方法。)

注意:請勿在輸入值的數據類型與基礎集合類型的數據類型不同的情況下使用此技術,在JavaScript中,該值是(僅)“字符串”,並且所有兩個輸入都有可能您認為“不同”的值可能會被強制轉換為相同的(字符串)鍵值。 該算法將無法區分它們。

如果必須使用PHP進行此操作,則可以使用array_unique()函數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM