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 我的非工作代码: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
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”我现在测试它,它工作了?!