Tengo una matriz de texto y los símbolos y el código actual hacen esto: busque en la matriz de texto y si hay un elemento de la matriz de símbolos en la matriz de texto , introdúzcalo en una nueva matriz (coinsArr)
Quiero encontrar un símbolo de la matriz de texto y si el siguiente elemento también es un símbolo, presione ambos (el símbolo actual y el elemento y el siguiente elemento, que también es un símbolo) con uno / entre ellos.
Así que este es mi código:
const text = [ 'aaaa', 'BTC', '08', '324', 'ETH', '233', 'yyyy', '30000', 'XRP', 'xxxxxGG', 'llll', '546', 'BCH', 'LTC', 'xxxyyy', '435', 'XLM', 'DASH', 'COIN' ]; const symbols = ['XLM', 'XTZ', 'BTC', 'DASH', 'ETH', 'LTC', 'BNB', 'BCH', 'XRP']; const coinsArr = []; for (let i = 0; i < text.length; i++) { for (let j = 0; j < symbols.length; j++) { const el = symbols[j]; if (el == text[i]) { coinsArr.push(el); } } } console.log({ 'coinsArr': coinsArr });Y da esta salida (solo busca en la matriz de texto y encuentra símbolos):
['BTC','ETH','XRP','BCH','LTC','XLM','DASH','COIN']Pero quiero esta salida:
['BCH/LTC','XLM/DASH']Puede lograr fácilmente el resultado usando reducir y optimizar el acceso de symbols usando Set
const text = [ 'aaaa', 'BTC', '08', '324', 'ETH', '233', 'yyyy', '30000', 'XRP', 'xxxxxGG', 'llll', '546', 'BCH', 'LTC', 'xxxyyy', '435', 'XLM', 'DASH', 'COIN' ]; const symbols = ['XLM', 'XTZ', 'BTC', 'DASH', 'ETH', 'LTC', 'BNB', 'BCH', 'XRP']; const set = new Set(symbols); const result = text.reduce((acc, curr, i, src) => { const next = src[i + 1]; if (set.has(curr) && set.has(next)) acc.push(`${curr}/${next}`); return acc; }, []); console.log(result);