问题描述
我已经看到了这个question,但是就像在python中一样,我想问一个类似的问题。 在不使用库的情况下,我该如何处理以下形式的带符号的字符串数组:
[["hi","how","are","you"],["how","you","doing"]]
如果我在下面显示字典,我该如何创建一个与标记化数组具有相同格式的数组,而不是使用字符串,而是使用一个整数来表示其在字典中的位置?
["how","hi","doing"]
所以输出看起来像这样:
[[2,1,0],[1,3]]
解决方法
我首先将第二个数组转换为对象,因此您可以在恒定时间内进行查找:
function translate(input,reference) {
let map = Object.fromEntries(reference.map((ref,i) => [ref,i+1]));
return input.map(phrase => phrase.map(word => map[word] || 0));
}
// Demo
let res = translate([["hi","how","are","you"],["how","you","doing"]],"hi","doing"]);
console.log(res);
,
使用map
和indexOf
方法
arr = [
["hi","doing"],];
// your input is array in javascript (not a dictionary)
const keys = ["how","doing"];
const res = arr.map((arr) => arr.map((word) => keys.indexOf(word) + 1));
console.log(res)