javascript - 使用字典将字母数组重写为数字
问题描述
例子:
“你好” => 0.1.2.2.3
“javaAscript”=> 0.1.2.1.3.4.5.6.7.8
“hippopotomonstrosesQuippedaliophobia” => 0.1.2.2.3.2.3.4.3.5.3.6.7.4.8.3.7.9.7.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(".");
}
提前致谢
解决方案
要将字符与数字相关联,请不要使用数组,请使用对象:
function wordPattern(word) {
const numbersByChar = {};
let i = 0;
return [...word]
.map(char => numbersByChar[char] ?? (numbersByChar[char] = i++))
.join('.');
}
console.log(wordPattern('hello'));
console.log(wordPattern('hippopotomonstrosesquippedaliophobia'));
或者没有您可能会发现更具可读性的简洁语法
function wordPattern(word) {
const numbersByChar = {};
let i = 0;
return Array.from(word)
.map((char) => {
if (numbersByChar[char] === undefined) {
numbersByChar[char] = i;
i++;
}
return numbersByChar[char];
})
.join('.');
}
console.log(wordPattern('hello'));
console.log(wordPattern('hippopotomonstrosesquippedaliophobia'));
推荐阅读
- jquery - 将动态生成的值保存到列表中
- reactjs - 在 React 中管理列表内的输入
- php - ExcludeDirectoryFilterIterator 中的 Laravel 5.1 随机超时
- linux - 启用 linux 内核驱动程序 dev_dbg 调试消息
- javascript - 在 Flask 中动态更改图像源
- excel - 在 VBA 中保存单元格的旧值
- reactjs - React Native - 找不到变量:符号
- react-native - 如何在反应原生地图中使用 animateToRegion 函数?
- django - 哪个是 Django 项目的最佳开发/生产环境?
- sql-server - 同步 SQL Server 数据库和 VS DB 项目