Check if array contains all elements of another array

前端 未结 5 1201
后悔当初
后悔当初 2020-11-30 08:27

I want a function that returns true if and only if a given array includes all the elements of a given "target" array. As follows.

const         


        
相关标签:
5条回答
  • 2020-11-30 08:56

    I used Purely Javascript.

    function checkElementsinArray(fixedArray,inputArray)
    {
        var fixedArraylen = fixedArray.length;
        var inputArraylen = inputArray.length;
        if(fixedArraylen<=inputArraylen)
        {
            for(var i=0;i<fixedArraylen;i++)
            {
                if(!(inputArray.indexOf(fixedArray[i])>=0))
                {
                    return false;
                }
            }
        }
        else
        {
            return false;
        }
        return true;
    }
    
    console.log(checkElementsinArray([1,2,3], [1,2,3]));
    console.log(checkElementsinArray([1,2,3], [1,2,3,4]));
    console.log(checkElementsinArray([1,2,3], [1,2]));
    
    0 讨论(0)
  • 2020-11-30 09:02

    You can use .every() and .includes() methods:

    let array1 = [1,2,3],
        array2 = [1,2,3,4],
        array3 = [1,2];
    
    let checker = (arr, target) => target.every(v => arr.includes(v));
    
    console.log(checker(array2, array1));
    console.log(checker(array3, array1));

    0 讨论(0)
  • 2020-11-30 09:07

    The every() method tests whether all elements in the array pass the test implemented by the provided function. It returns a Boolean value. Stands to reason that if you call every() on the original array and supply to it a function that checks if every element in the original array is contained in another array, you will get your answer. As such:

    const ar1 = ['a', 'b'];
    const ar2 = ['c', 'd', 'a', 'z', 'g', 'b'];
    
    if(ar1.every(r => ar2.includes(r))){
      console.log('Found all of', ar1, 'in', ar2);
    }else{
      console.log('Did not find all of', ar1, 'in', ar2);
    }
    
    0 讨论(0)
  • 2020-11-30 09:16

    If you are using ES5, then you can simply do this.

    targetArray =[1,2,3]; 
    array1 = [1,2,3]; //return true
    array2 = [1,2,3,4]; //return true
    array3 = [1,2] //return false
    
    console.log(targetArray.every(function(val) { return array1.indexOf(val) >= 0; })); //true
     console.log(targetArray.every(function(val) { return array2.indexOf(val) >= 0; })); // true
     console.log(targetArray.every(function(val) { return array3.indexOf(val) >= 0; }));// false
    
    0 讨论(0)
  • 2020-11-30 09:20

    You can try with Array.prototype.every():

    The every() method tests whether all elements in the array pass the test implemented by the provided function.

    and Array.prototype.includes():

    The includes() method determines whether an array includes a certain element, returning true or false as appropriate.

    var mainArr = [1,2,3];
    function isTrue(arr, arr2){
      return arr.every(i => arr2.includes(i));
    }
    console.log(isTrue(mainArr, [1,2,3]));
    console.log(isTrue(mainArr, [1,2,3,4]));
    console.log(isTrue(mainArr, [1,2]));

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