[英]How to check whether a value already exists using AJAX in jQuery validator?
[英]How to check if object value in array already exists using jquery
如何检查数组中已经存在的对象值? 如果不推送值
小提琴: https : //jsfiddle.net/h9zctLqz/
的HTML:
<form>
<input type="text" id="input" name="input">
<button type="button" name="save">save</button>
</form>
jQuery的:
$('document').ready(function(){
$myData = [];
$('button[name=save]').on('click', function(){
var input = $('#input').val();
$myData.indexOf({'input':input}) === -1 ? $myData.push({'input':input}) : console.log('already exists');
console.log($myData);
});
});
您应该知道的第一件事是,在javascript中:
({ 'input': input} === { 'input': input }) // returns false
===
比较对象引用,而不是对象的外观。
这意味着indexOf({input: input})
将永远不会返回-1。
您可以使用some
解决此问题。 some
需要一个函数来比较事物,因此您可以编写自己的“等于”(而不是使用===
的indexOf
)。
if ($myData.some(item => item.input === input)) console.log("exists")
else $myData.push({input: input});
尝试这个 :
if(myArray.find(x => x.input === input)){
console.log("Exist");
} else{
anotherarray.push({'input':input});
}
如果数组中的元素满足提供的测试功能,则find()方法将在数组中返回一个值。 否则返回undefined。
如果要获取匹配元素的数组,请改用filter()方法:
myArray.filter(x => x.id === input)
如果要获取
another property
数组,可以使用map()方法执行此操作:
myArray.filter(x => x.id === input).map(x => x.anotherproperty)
您应该只使用include数组方法array.includes(一些值) ,然后,如果不包括include则返回布尔值,您可以按下。 请注意,这是纯Javascript。 数组包含方法
let array = [1, 2, 3, 4, 5]; console.log(array) if (array.includes(2)) { array.push(20); } console.log(array)
这些对象将具有两个不同的引用,因此它将始终返回false。 使用.some或.find并对.input字段进行值比较。
const itemExists = $myData.some(el => el.input === input);
if(itemExists) {
console.log("Already exsists");
}
else {
$myData.push({'input':input})
}
看起来像是哈希表的完美用例:
var hash={},result=[];
$('button[name=save]').on('click', function(){
var input = $('#input').val();
if(hash[input]){
hash[input].quantity++;
}else{
result.push(hash[input]={input,quantity:1});
}
});
indexOf与Strings配合良好,但要检查数组中的内容,您不能简单地使用它。
其他方法可能是遍历整个数组并进行检查,但是在时间复杂度方面这将是非常昂贵的。
因此,最好的答案是在这种情况下使用简单的地图。 尝试以下-
$('document').ready(function(){
var myData = new Object(); // or var map = {};
$('button[name=save]').on('click', function(){
var input = $('#input').val();
if(myData[input] != input)
myData[input] = input;
else
console.log('already exists');
});
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.