如何检查数组中是否存在对象值?如果没有推送值
小提琴:https://jsfiddle.net/h9zctLqz/
HTML:
<form>
<input type="text" id="input" name="input">
<button type="button" name="save">save</button>
</form>
Run Code Online (Sandbox Code Playgroud)
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);
});
});
Run Code Online (Sandbox Code Playgroud)
您应该知道的第一件事是,在javascript中:
({ 'input': input} === { 'input': input }) // returns false
Run Code Online (Sandbox Code Playgroud)
=== 比较对象引用,而不是对象的外观.
这意味着,indexOf({input: input})将永远不会返回任何东西比-1.
您可以使用以解决此问题some.some需要一个函数来比较东西,所以你可以编写自己的"等于"(而不是indexOf使用===).
if ($myData.some(item => item.input === input)) console.log("exists")
else $myData.push({input: input});
Run Code Online (Sandbox Code Playgroud)