javascript - 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']
如果有第四个符号,则成对返回第三个和第四个符号
解决方案
尝试使用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)
推荐阅读
- r - Pivot_wider 介绍了 NA
- java - 自定义对象的自定义排序
- php - 如何遍历所有资产并检查密钥,如果密钥匹配,则继续并显示所有资产?PHP/Laravel
- php - php mysql foreach 重复两次
- node.js - 如何使用nodejs更新mongodb删除重复项?
- google-data-studio - 此时分区数大于 BI 引擎支持的 Google Data Studio BI 引擎问题
- google-sheets - 具有 LEN 和更多条件的 COUNTIFS
- jmeter - 我在 Jmeter 中添加了堆大小,但仍然出现 OOM 错误
- r - 启动新的 RSelenium 服务器时出错
- java - 如何将 gradle 指向可以具有不同路径的本地依赖项?