我有一些输入(随机数> 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();
});
然后,它通过jQuery ajax将所有信息(之前解析过的JSON)发送到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']值。
答案 0 :(得分:1)
您可以使用$.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>
答案 1 :(得分:0)
另一种方法(代码示例未显示...)是创建一个散列,其中每个接收到的值(如果它是一个字符串或者可以明确强制成一个......)是关键,而不关心价值就是价值。
以空哈希开头。对于每个输入,测试哈希中是否存在与该输入匹配的键。如果是这样,你就有了一个骗局。如果没有,请将输入添加为新密钥。 (相关值并不重要......)检查完所有输入后,可以丢弃哈希值。
(这种策略适用于任何支持哈希的编程语言......现在,这些都是&#34;所有这些都是。&#34;原则上,它也是计算多少次的有效方式任何特定元素都会出现。)
警告:当输入值的数据类型与底层集合类型的数据类型不同时,不要使用此技术,在JavaScript中(仅)#34;字符串&#34;并且有任何可能性,你认为两个输入是&#34;不同的&#34;可以被强制转换为相同的(字符串)键值。该算法将无法区分它们。
答案 2 :(得分:0)
如果我必须使用PHP,我会使用array_unique()函数....