有没有办法将 readline 中的用户输入与数组的元素进行比较?

Is there a way to compare User's input from the `readline` with the elements of an Array?

如何比较 input 和数组元素?我想要做的是读取用户的输入,如果此输入与 Arrays 元素之一相同,它应该调用 console.log()。但我找不到让它工作的方法。 有人可以帮忙吗?

编辑:如果您需要更多信息,可提供 Github link。 https://github.com/TheRadioDept/technical-question

编辑:找到比较的方法,其:

rl.question('Please enter the translation key ', (key) => {
    if (keys.includes(key)){
       console.log(data.map(point=>point.translations.deu.official));
    }

现在我想把它从 console.log(data.map(point=>point.translations.deu.official)); 改成 console.log(data.map(point=>point.translations.key));。但是输出变成了undefined。有办法解决这个问题吗?

var keys = ['cym','deu','fra','hrv','ita','jpn','nld','por','rus','spa'];  

const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});


rl.question('Please enter the translation key ', (key) => {
if (key.match(/^keys[0]?$/i)){
    console.log(data.map(point=>point.translations.deu.official));
}
else {
    console.log("Translation key is not supported. ");
}
rl.close();

我看到你正在使用正则表达式进行匹配,你应该在处理字符串时使用。如果您有一个包含您的答案的数组,要查找某个元素是否存在,您必须始终遍历该数组。

for (element in array) { // compare against your element }

但是,所有现代编程语言都会为您提供一个函数来为您执行该循环。在 JavaScript 中是 Array.prototype.includes()

在您的代码中使用它

rl.question('Please enter the translation key ', (key) => {
if (keys.include(key)){
    console.log(data.map(point=>point.translations.deu.official));
}

在此处阅读更多相关信息:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/includes