Javascript 使用字典将字母数组重写为数字

Javascript 使用字典将字母数组重写为数字,javascript,Javascript,示例: “你好”=>0.1.2.2.3 “javAscript”=>0.1.2.1.3.4.5.6.7.8 “河马恐惧症”=>0.1.2.2.3.2.3.4.3.3.6.7.4.8.3.7.9.10.11.1.2.2.9.12.13.14.1.3.2.0.3.15.1.13 我的非工作代码: function wordPattern(word) { var res = [] var dic = [] var count = 0 var pipa = word.toLowerCa

示例:

“你好”=>0.1.2.2.3

“javAscript”=>0.1.2.1.3.4.5.6.7.8

“河马恐惧症”=>0.1.2.2.3.2.3.4.3.3.6.7.4.8.3.7.9.10.11.1.2.2.9.12.13.14.1.3.2.0.3.15.1.13

我的非工作代码:


function wordPattern(word) {
  var res = []
  var dic = []
  var count = 0
  var pipa = word.toLowerCase().split("")

  for (i=0;i<pipa.length;i++) {
    if (!dic.includes(pipa[i])) {
      dic.push({key:   count, value: pipa[i]});
      count ++
  }
    for (j=0;j<pipa.length;j++) {
      res.push(dic.key[pipa[i]])
    }
    return res.join("."); 
}

功能字模式(word){
var res=[]
变量dic=[]
变量计数=0
var pipa=word.toLowerCase().split(“”)

对于(i=0;i要将字符与数字关联,请不要使用数组,请使用对象:

功能字模式(word){
常量numbersByChar={};
设i=0;
返回[…字]
.map(char=>numbersByChar[char]??(numbersByChar[char]=i++)
。加入(‘.);
}
log(wordPattern('hello'));

log(wordPattern('Hippopotomonstrosesquippedaliphobia');
提示1是可以得到一个类似于:word[index]的字母

因此,请将代码更改为:

    function wordPattern(word) {
      var res = []
      var dic = []
      var count = 0
      for (i=0;i<word.length;i++) {
        let dicItem = dic.find(x=>x.value==word[i]);
        if(!dicItem) {
          dic.push({key: count, value: word[i]});
          res.push(count);
          count ++;
         }
         else res.push(dicItem.key);
       }
        return res.join("."); 
}
功能字模式(word){
var res=[]
变量dic=[]
变量计数=0
对于(i=0;ix.value==word[i]);
如果(!项目){
dic.push({key:count,value:word[i]});
res.push(计数);
计数++;
}
else res.push(dicItem.key);
}
返回res.join(“.”);
}

我想你以前见过这个练习-LOLNo,从来没有,但是要实现的算法对Writew来说非常简单。我们没有经历过这个,我们需要通过字典来解决它。我想OP会对其余的语法、映射、连接和逻辑OR略作改动。我很欣赏你的才华。@RandyCasburn,还有更多关于
??
(nullish合并运算符)你能解释一下你想要的输出是什么吗,它不清楚,例如为什么hello=0.1.2.2.3?!我们给每个字母自己的数字。H是第一个,所以它是0 E是第二个,它是1等等……对于字符串“Helloooeee”==>0.1.2.2.3.3.3.3.2.2你的代码不起作用。我尝试了“你好”。“0.1.2.3.4”而不是“0.1.2.2.3”我现在测试它,它工作了?!