当前位置: 首页 > 编程笔记 >

从JavaScript中混乱的数字名称准备数字

慕意致
2023-03-14
本文向大家介绍从JavaScript中混乱的数字名称准备数字,包括了从JavaScript中混乱的数字名称准备数字的使用技巧和注意事项,需要的朋友参考一下

问题

假设以下数字名称字符串-

const str = 'TOWNE';

如果重新排列此字符串,我们可以在其中找到两个数字名称2(TWO)和1(ONE)。

因此,我们预期输出为21

我们需要编写一个JavaScript函数,该函数接受一个这样的字符串并返回字符串中存在的数字。

示例

以下是代码-

const str = 'TOWNE';
const findNumber = (str = '') => {
   function stringPermutations(str) {
      const res = [];
      if (str.length == 1) return [str];
      if (str.length == 2) return [str, str[1]+str[0]];
      str.split('').forEach((chr, ind, arr) => {
         let sub = [].concat(arr);
         sub.splice(ind, 1);
         stringPermutations(sub.join('')).forEach(function (perm) {
            res.push(chr+perm);
         });
      });
      return res;
   }
   const legend = {
      'ONE': 1, 'TWO': 2, 'THREE': 3, 'FOUR': 4,
      'FIVE': 5, 'SIX': 6, 'SEVEN': 7, 'EIGHT': 8,
      'NINE': 9, 'ZERO': 0
   };
   const keys = Object.keys(legend);
   const res = {};
   const resArr = [];
   let result = '';
   keys.forEach(key => {
      const match = stringPermutations(key).find(el => el.split('').every(char => str.includes(char)));
      if(match){
         const index = str.indexOf(match[0]);
         if(!res.hasOwnProperty(key)){
            res[key] = [index];
         }else if(!res[key].includes(index)){
            res[key].push(index);
         };
      };
   });
   Object.keys(res).forEach(word => {
      resArr.push([word, ...res[word]]);
   });
   resArr.sort((a, b) => a[1] - b[1]);
   resArr.forEach(sub => {
      result = result + String(legend[sub[0]]).repeat(sub.length - 1);
   });
   return +result;
};
console.log(findNumber(str));
输出结果

以下是控制台输出-

21

 类似资料:
  • 下面是我的网站地图的结构: somefile.xml 以下是谷歌的错误信息: 我想我错过了什么,网上的信息很混乱。正确的语法是什么?如果你能帮忙,谢谢。

  • 问题内容: 我有一个带有列()的表。在这个专栏中,我存储值一样。 但是我必须出示月份 名称 。 例如:如果值是我需要显示。 问题答案: 基本上,@ small_duck已经发布了一些内容,但是进行了一些改进: 只需将文本强制转换为文本即可,无需。

  • 我使用SVN来版本化源文件,使用maven发布插件来创建和标记发布。我的项目是一个多模块项目。 短篇小说 版本:prepare目标导致在我的SCM中同时标记trunk和tag。 长话短说 我的项目是一个多模块项目: SCM标记在我的项目父级POM bar/POM.xml中的配置如下: 当我跑步时: pom.xml中的SCM标记。标签已修改,但不例外: 如果我执行释放: 目录主干和标签在标签文件夹中

  • 我可能有一个简单的编码问题,但我无法解决。我在MySQL数据库中有英文或中文的地址,所以我使用了utf8_unicode_ci。我从数据库中检索我的汉字没有问题,但我不能在准备好的请求中使用汉字。 我解释说:如果我打 我会得到一个结果,因为其中一个地址包含“”但如果我尝试使用一个准备好的请求: 如果$_post[“address”]在英文中有效,在中文中就不行了:p 编辑: 当请求show变量时,

  • 问题内容: 我有这个: 我想要这个: 问题答案: 更新 正如其他人提到的那样,这不是最快也不推荐的解决方案。 您可以使用eval:

  • 问题内容: 使用PDO时,我已经看到很多文章在命名参数前使用冒号(),还有一些不使用冒号的文章。我会尽快不使用冒号,只是因为它的按键少了一点,而且读起来也更容易一点。 这似乎对我来说很好,但是我很好奇在使用冒号时是否缺少一些重要的东西? 例如,这很好用: 与大多数使用此功能的开发人员相对,这也可以: 注意语句参数中的冒号。 我想了解冒号的用途。 问题答案: SQL语句中必须使用冒号,以指示哪些标识