Tengo dos matrices de cadenas. donde quiero ver si una matriz tiene algún valor común de otra matriz y luego imprimir la matriz que solo tiene valores únicos. Para esto, estoy realizando una función de JavaScript en ambas matrices que devuelve un booleano si una matriz tiene valores comunes de otra matriz y luego, si la condición es verdadera, estoy haciendo un filtro en una matriz para mostrar los datos. Aquí están las matrices:
marketingCarrierCode: ["DL", "AA"] operatingCarrierCode: ["AA", "AA"]ahora estoy haciendo cada filtro de esta manera:
const hasSameCarrierCode = operatingAirlineCode.every( code => marketingAirlineCode.indexOf(code) !== -1, ); const listOfOperatingCarriers = operatingAirlineCode.filter( code => marketingAirlineCode.indexOf(code) === -1, );esto me da:
hasSameCarrierCode: true listOfOperatingCarriers: []ahora quiero realizar todas las funciones y filtrar en una función, ¿cómo puedo hacer eso?
No necesita funcionar primero. Puedes usar este:
const listOfOperatingCarriers = operatingAirlineCode.filter( code => marketingAirlineCode.indexOf(code) === -1, ); listOfOperatingCarriers.length !== operatingAirlineCode.length => true, listOfOperatingCarriers => []En su código de muestra, el código "para cada" en operatingCarrierCode , está verificando si existe en marketingAirlineCode . Si no existe ningún código en marketingAirlineCode , entonces la prueba falla, es decir, hasSameCarrierCode debe ser falso. Además, agrega el código poco común en listOfOperatingCarriers . Todo esto se puede combinar en uno forEach como se muestra a continuación:
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);Una versión mucho más pequeña podría ser:
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);