如何使用jquery检查数组中的对象值是否已存在

Gre*_*try 1 javascript jquery

如何检查数组中是否存在对象值?如果没有推送值

小提琴: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)

use*_*291 8

您应该知道的第一件事是,在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)