javascript - 从文本数组中找到一个符号,如果下一个元素也是一个符号,则将它们都推入
问题描述
我有一个文本数组和一个符号,当前代码执行此操作:在文本数组中搜索,如果文本数组中有符号数组的元素,将其推入一个新数组(coinsArr)
我想从文本数组中找到一个符号,如果下一个元素也是一个符号,则将它们(当前符号和元素以及下一个元素,这也是一个符号)都推入它们之间。
所以这是我的代码:
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
});
并给出这个输出(只需在文本数组中搜索并找到符号):
['BTC','ETH','XRP','BCH','LTC','XLM','DASH','COIN']
但我想要这个输出:
['BCH/LTC','XLM/DASH']
解决方案
您可以使用reduce轻松实现结果并优化symbols
使用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);
推荐阅读
- regex - 在 RegEx 中的匹配项之间插入字符(连字符)
- windows-10 - 继续检查所有实例版本,即使一个在 python 中引发错误?
- sql - SQL / BQ - 使用合并功能从表中更新应用程序名称
- r - Stat 函数 dnorm 失败
- reactjs - 重构 React 组件的渲染方法会导致错误
- javascript - 按顺序从数组中获取每个项目的最佳方法是什么?
- javascript - 由于事件侦听器,我的变量不是全局变量。我需要他们是全球性的
- javascript - 如何将画布完全堆叠在网络摄像头流的顶部?
- azure - Azure Functions - 部署槽 - 未选中“在目标位置删除其他文件”的效果
- python - set_adminrole() 接受 1 个位置参数,但给出了 2 个