1

Given arrays a and b of size n and m respectively where m>=n. The task is to find the union between these two arrays and return the union array.

let a = [5, 3];
let b = [1, 2, 3, 4, 5];
let a = [2, 2];
let b = [1, 1];
let n = a.length;
let m = b.length;

for (let i = 0; i < m; i++) {
  let present = true;
  
  for (let j = 0; j < n; j++) {
    if (b[i] === a[j]) {
      present = false;
    }
  }
  
  if (present !== false) {
    a.push(b[i]);
  }
}

I am trying to solve this question from last 2 hour but I am not getting the desired output so please help me to solve this question.

1
  • 2
    use a Set in js Commented Dec 16, 2022 at 7:17

2 Answers 2

1

One way to do this is by taking advantage of the use of dictionaries in Javascript. Dictionaries are objects in Javascript, and they are used to store key-value pairs. The keys are unique, so if you add a key that already exists, it will overwrite the previous value. This is useful for finding the union of two arrays, because you can add all the elements of the first array to a dictionary, and then add all the elements of the second array to the dictionary. The dictionary will only contain unique elements, so the union of the two arrays will be the keys of the dictionary.

// Javascript code to find the union of two arrays
function array_union(arr1, arr2) {
    // Create a new dictionary
    var union = {};

    // Loop through the first array
    for (var i = 0; i < arr1.length; i++) {
        // Add the element to the dictionary
        union[arr1[i]] = true;
    }

    // Loop through the second array
    for (var i = 0; i < arr2.length; i++) {
        // Add the element to the dictionary
        union[arr2[i]] = true;
    }

    // Return the dictionary keys
    return Object.keys(union);
}

If you do not want to use dictionaries, you can use this naive approach:

function array_union(arr1, arr2) {
    // Create a new array
    var union = [];

    // Loop through the first array
    for (var i = 0; i < arr1.length; i++) {
        // Check if the element is in the union array
        if (union.indexOf(arr1[i]) == -1) {
            // Add the element to the union array
            union.push(arr1[i]);
        }
    }

    // Loop through the second array
    for (var i = 0; i < arr2.length; i++) {
        // Check if the element is in the union array
        if (union.indexOf(arr2[i]) == -1) {
            // Add the element to the union array
            union.push(arr2[i]);
        }
    }

    // Return the union array
    return union;
}

Finally, the "cool kids" way to do this is by using the reduce function. This is a very powerful function that can be used to perform a reduction on an array (checkout this explanation) . In this case, we are using it to create a new array where items are only added if they are not already in the array.

function array_union(n, m) {
    // Do a reduction on the two arrays to create a new array where items are only added if they are not already in the array
    let union = n.concat(m).reduce((a, b) => {
        if (a.indexOf(b) == -1) {
            a.push(b);
        }
        return a;
    }, []);
    
    return union;
}
Sign up to request clarification or add additional context in comments.

Comments

0

This is not the best solution I think but it is a start:

const union=(m,n)=>{
    let obj1={}
    let obj2={}
    let arr=[]
    for(let i=0;i<m.length;i++){
        obj1[m[i]]=obj1[m[i]]?obj1[m[i]]++:1
        obj2[n[i]]=obj2[n[i]]?obj2[n[i]]++:1
    }
    for(let [key,value] of Object.entries(
        Object.keys(obj1).length>Object.keys(obj2).length?obj1:obj2
    )){
        if(obj1[key] && obj2[key]){
            arr.push(parseInt(key))
        }
    }
    return arr
}

 let a = [1,2,2,3];
 let b = [1,2,3,4,5];
 
console.log(union(a,b))

3 Comments

This answer is missing its educational explanation. Code-only answers are the least helpful kind of answer. They miss a great opportunity to educate/empower the asker and thousands of future researchers; furthermore plain English improves the searchability of Stack Overflow and will eventually help AI to completely replace human programmers.
@mickmackusa thank you for pointing it out, I will keep that in mind next time I answer
Answers can be edited at any time.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.