如何检查 vue.js 中的数组中是否已存在项目?

How to check if item already exists in array in vue.js?

我有这个数组,我在点击时添加值,但我想检查值是否已经在数组中,如果它什么都不做。我尝试使用 indexOf 但我每次都得到相同的结果

this.fields.push(this.field);
      this.field = { value: '' };

您是否通过 value 属性 确定它是否在数组中?如果是这样,您可以使用 Array.some().

var exists = this.fields.some(function(field) {
  return field.value === this.field.value
});

if (!exists) {
  this.fields.push(this.field);
}

这可能是一个详细而简单的解决方案。

在JavaScript或Jquery

//plain array
var arr = ['a', 'b', 'c'];
var check = arr.includes('a');
console.log(check); //returns true
if (check)
{
   // value exists in array
   //write some codes
}

// array with objects
var arr = [
      {x:'a', y:'b'},
      {x:'p', y:'q'}
  ];

// if you want to check if x:'p' exists in arr
var check = arr.filter(function (elm){
    if (elm.x == 'p')
    {
       return elm; // returns length = 1 (object exists in array)
    }
});

// or y:'q' exists in arr
var check = arr.filter(function (elm){
    if (elm.y == 'q')
    {
       return elm; // returns length = 1 (object exists in array)
    }
});

// if you want to check, if the entire object {x:'p', y:'q'} exists in arr
var check = arr.filter(function (elm){
    if (elm.x == 'p' && elm.y == 'q')
    {
       return elm; // returns length = 1 (object exists in array)
    }
});

// in all cases
console.log(check.length); // returns 1

if (check.length > 0)
{
   // returns true
   // object exists in array
   //write some codes
}

在 Vue 中

<script>
    export default {
        data: function () {
            return {
               arr = [
                   {x:'a', y:'b'},
                   {x:'p', y:'q'}
                ],
             }
         },
        methods: {

            // assign this function to any event of any dom
            checkObjInArr = function(){

                     var check = this.arr.filter(function (elm) {
                         if (elm.x == 'a' && elm.y == 'M') {
                                 return elm;
                            }
                      });
                     console.log(check.length > 0); // returns 1
                     if (check.length > 0)
                        {
                            // returns true
                            // object exists in array
                            //write some codes
                         }
                },                
        },
     }
</script>

在对象数组中最好使用Array.some()

this.users = [{id : 1, name : 'Jonh Doe'},{id : 2, name : 'Mary Jean'}]

if(!this.users.some(data => data.id === 1)){
    //don't exists       
}else{
    //exists because Jonh Doe has id 1
}

来源:https://www.samanthaming.com/