繁体   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