Returning true if JavaScript array contains an element

后端 未结 4 553
心在旅途
心在旅途 2021-01-28 01:12

So far I have this code:

var isMatch = viewedUserLikedUsersArray.indexOf(logged_in_user);
    if (isMatch >=0){
      console.log(\'is match\');
    }
    els         


        
相关标签:
4条回答
  • 2021-01-28 01:27

    The One and Only ChemistryBlob answer with Array.prototype

    Array.prototype.findMatch = function(token) {
        var i = 0, count = this.length, matchFound = false;
    
        for(; i < count; i++) {
            if (this[i] === token) {
                matchFound = true;
                break;
            }
        }
    
        return matchFound;
    }
    
    var isMatch = viewedUserLikedUsersArray.findMatch(logged_in_user); // etc.
    
    0 讨论(0)
  • 2021-01-28 01:41

    Probably going to get blasted for some reason but hey, why not!

    function findMatch(arr, user) {
        var i = 0, count = arr.length, matchFound = false;
    
        for(; i < count; i++) {
            if (arr[i] === user) {
                matchFound = true;
                break;
            }
        }
    
        return matchFound;
    }
    
     var isMatch = findMatch(viewedUserLikedUsersArray, logged_in_user); // etc.
    

    An alternative could also be to use includes()

    var isMatch = viewedUserLikedUsersArray.includes(logged_in_user); // returns true/false
    
    0 讨论(0)
  • 2021-01-28 01:46

    You could just use Array.prototype.some

    var isMatch = viewedUserLikedUsersArray.some(function(user){
      return user === logged_in_user;
    });
    

    It stops when it finds a true value

    0 讨论(0)
  • 2021-01-28 01:51

    At first, we have to understand, what is stored in viewedUserLikedUsersArray array.

    If there are primitives, it's ok, but if there are objects we can't use indexOf method of array, because it use strict comparison === inside, how we know, the comparison with object is going by link.

    indexOf works similar to iterating through the loop, the only way.

    In case with objects we can use find method of array MDN Array.prototype.find() or findIndex Array.prototype.findIndex();

    Also we can store users in hashMap with userId keys, and check matching by referring to the object property.

    var someUsers = {
      '#124152342': {
        ...
      },
      '#534524235': {
        ...
      },
      ...
    };
    
    ...
    
    var someUserId = '#124152342';
    
    if (someUsers[someUserId]) {
      console.log('is match');
    } else {
      console.log('no match');
    }

    0 讨论(0)
提交回复
热议问题