I have two arrays of strings. where I want to see if one array has any value common from another array and then print the array which has unique values only. For this I am performing a JavaScript every function on both the arrays which returns a Boolean if one array has values common from another array and then if the condition is true, I am doing a filter on an array to show the data. Here are the arrays:
marketingCarrierCode: ["DL", "AA"]
operatingCarrierCode: ["AA", "AA"]
now I am doing every and filter like this way:
const hasSameCarrierCode = operatingAirlineCode.every(
code => marketingAirlineCode.indexOf(code) !== -1,
);
const listOfOperatingCarriers = operatingAirlineCode.filter(
code => marketingAirlineCode.indexOf(code) === -1,
);
this gives me:
hasSameCarrierCode: true
listOfOperatingCarriers: []
now I want to perform every and filter function in one function, how can I do that?
Doesn't need to first function. You can use thie:
const listOfOperatingCarriers = operatingAirlineCode.filter(
code => marketingAirlineCode.indexOf(code) === -1,
);
listOfOperatingCarriers.length !== operatingAirlineCode.length => true,
listOfOperatingCarriers => []
In your sample code, "for each" code in operatingCarrierCode, you are checking if it exists in marketingAirlineCode. If any code doesn't exist in marketingAirlineCode, then test is failed i.e. hasSameCarrierCode should be false. Also, you add the uncommon code in list listOfOperatingCarriers. All this can be combined into one forEach as below:
const marketingAirlineCode = ["DL", "AA"]
const operatingCarrierCode = ["AA", "AA"]
let hasSameCarrierCode = true;
let listOfOperatingCarriers = [];
operatingCarrierCode.forEach(code => {
if (marketingAirlineCode.indexOf(code) === -1) {
hasSameCarrierCode = false;
listOfOperatingCarriers.push(code);
}
})
console.log(`hasSameCarrierCode:`, hasSameCarrierCode)
console.log(`listOfOperatingCarriers:`, listOfOperatingCarriers);
A much smaller version could be:
const marketingAirlineCode = ["DL", "AA"]
const operatingCarrierCode = ["AA", "AA"]
const listOfOperatingCarriers = operatingCarrierCode.filter(code => marketingAirlineCode.indexOf(code) === -1);
const hasSameCarrierCode = listOfOperatingCarriers.length === 0;
console.log(`hasSameCarrierCode:`, hasSameCarrierCode)
console.log(`listOfOperatingCarriers:`, listOfOperatingCarriers);