如何从JavaScript中的数组获得输出?

好,所以我一直在学习JavaScript,我知道最基本的东西,但我想知道如何从另一个数组中的文本基于数组的输出…

例如:

var input = ["hi", "welcome"]; var output = ["hello", "thank you"]; 

所以,如果我要input“嗨”,我希望返回是“欢迎”和“谢谢”相同的“你好”。

input[0] = output[0]但我想searchinput数组,然后得到input的输出string。

可能是一个声明? 我一直试图find不同的方式,但是可能有人在那里可能知道如何做到这一点!

我很感激我得到的任何帮助!

编辑:
为了澄清,如果有人已经与IRC合作,我正在处理,所以我需要检查消息,并将它们与input数组或对象进行比较,然后将string输出到另一个数组或对象中的匹配键。

正如@FelixKling所说, indexOf将起作用。 然而,你并不总是想要采取这种方法,特别是如果你有大的数组。 之所以这样,是因为indexOf会遍历数组来查找匹配项,如果有一个大数组可能需要一段时间。 在“大O”中,操作是O(n)

一般来说,如果你想要查找,你应该使用一个JavaScript对象,它给你O(1)复杂性:

 var outputForInput = { "hi": "hello", "welcome": "thank you" }; var input = "hi"; var output = outputForInput[input]; 

有两个解决scheme。

第一个是使用一个对象:

 var obj = {"hi":"hello","welcome":"thank you"} 

并按以下方式访问数据:

 obj["hi"]; //returns hello obj["welcome"]; //returns thank you 

您可以使用Object.keys()函数来获取一个键的数组。

为了对数组做同样的事情,使用本地的indexOf函数。 给你的数组,代码将是:

 output[input.indexOf("hi")] //returns hello 

这个方法的问题是,如果查询string不存在于数组中,indexOf返回-1。 这将导致错误被抛出,而obj [“nonexistantkey”]只是返回undefined。

通过testing循环中的值,您将得到索引,您可以使用该索引返回输出数组上的同一个点。

 function inOut(a1, val, a2){ for(var i=0,l=a1.length; i<l; i++){ if(a1[i] === val){ return a2[i]; } } return false; } console.log(inOut(input, 'hi', output)); // returns 'hello' 
 function getResponse(inputStr){ return output[input.indexOf(inputStr)]; } 

或者,如果你遵循雅各布的build议(我build议):

 function getResponse(inputStr){ return outputForInput[inputStr]; } 

请注意,如果inputstring不匹配,其中任何一个都将返回undefined