首页 > 解决方案 > 用于计算一长串数字同时排除文本输入的计算器

问题描述

我正在制作一个计算器,它将用于计算数字列表,同时排除文本输入(来自用户)。列表将完全如下所示(每次不同的值除外):

黄金:72,644 灵丹妙药:217,966 黑暗:2 奖杯:-19 搜索:4

黄金:188,643 灵丹妙药:226,899 黑暗:723 奖杯:6 搜索:9

黄金:483,499 灵丹妙药:328,480 黑暗:1,214 奖杯:3 搜索:1

黄金:182,237 灵丹妙药:385,613 黑暗:1,350 奖杯:-19 搜索:5

黄金:504,233 灵丹妙药:494,088 黑暗:357 奖杯:-24 搜索:2

我正在尝试找到一种方法来从该列表中获取特定值,同时仍将其保留在一个列表中<textarea>. 例如,我想计算所有的“GOLD: x”输入,这样我就可以获得这些数字的列表。

计算不是问题,我只需要知道如何从每个“GOLD:x”输入中导出所有值。从这个列表中,我需要分别获取数字 72.644、188.643、483.499、182.237、504.233 以及 ELEXIR 和 DARK 的值。我的问题是,如何在 javascript 或 html 中实现这一点?

我还没有真正开始尝试任何事情,因为我是一个完全的编码初学者。我知道我可以将它们定义为一个数组,但我不知道如何获取一组信息,其中包括某些标签,例如“GOLD”及其各自的数字。

<textarea id="logInput" rows="14" cols="95" placeholder="Paste log here"></textarea> //This is where the list will be entered

标签: javascripthtml

解决方案


您可以获取该值,然后用 & 替换所有新行,' '然后通过 delimiter 创建一个数组' '

遍历这个数组并检查特定的单词 likegold:因为你需要这个文本后面的值。

function getValue() {
  let arr = [];
  let val = document.getElementById('logInput').value
    .replace(/\n/g, ' ')
    .split(' ');
  for (let i = 0; i < val.length; i++) {
    if (val[i].trim().toLowerCase() === 'gold:') {
      arr.push(val[i + 1]);
    }
  }

  console.log(arr)
}
<textarea id="logInput" rows="14" cols="95" placeholder="Paste log here">
GOLD: 72,644 ELIXIR: 217,966 DARK: 2 TROPHIES: -19 SEARCHES: 4 
GOLD: 188,643 ELIXIR: 226,899 DARK: 723 TROPHIES: 6 SEARCHES: 9 
GOLD: 483,499 ELIXIR: 328,480 DARK: 1,214 TROPHIES: 3 SEARCHES: 1 
GOLD: 182,237 ELIXIR: 385,613 DARK: 1,350 TROPHIES: -19 SEARCHES: 5 
GOLD: 504,233 ELIXIR: 494,088 DARK: 357 TROPHIES: -24 SEARCHES: 2</textarea>
<button type='button' onclick='getValue()'>Get Value</button>


推荐阅读