首页 > 解决方案 > javascript中的符号配对

问题描述

我有一个文本和一个符号数组,所以当前代码这样做:

从文本数组中找到一个符号,如果下一个元素也是一个符号,则将它们(当前符号和下一个元素,也是一个符号)与它们之间的一个 / 推送到一个新数组。(制作一个符号对)

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','COIN','ETH','LTC','BNB','BCH','XRP'];

//Return all the pair in text
   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;
   }, []);


//output : 
//['BCH/LTC','XLM/DASH','DASH/COIN'],

但是在这里,文本数组中有 3 个连续元素,'XLM', 'DASH' ,'COIN'正如您在输出中看到的,它返回两对 3 个连续符号:'XLM/DASH','DASH/COIN'

我想忽略它,如果第三个符号之后没有其他符号,只需成对返回第一个和第二个符号

我想从文本数组中得到什么: ['BCH/LTC','XLM/DASH']

如果有第四个符号,则成对返回第三个和第四个符号

标签: javascriptarrays

解决方案


尝试使用for循环

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', 'COIN', 'ETH', 'LTC', 'BNB', 'BCH', 'XRP'];

//Return all the pair in text
const set = new Set(symbols);

let result = []
for (let i = 0; i < text.length; i += 2) {
  let curr = text[i], next = text[i + 1];
  if (set.has(curr) && set.has(next)) {
    result.push(`${curr}/${next}`)
  }
}

console.log(result)


推荐阅读