[英]How to get an output from an array in javascript?
好的,所以我一直在学习javascript,并且我了解大多数基本知识,但是我想知道如何基于另一个数组中的文本从数组中获取输出...
例如:
var input = ["hi", "welcome"];
var output = ["hello", "thank you"];
因此,如果我要输入“ hi”,我希望返回的字样是“ hello”,表示“ welcome”和“谢谢”。
或input[0] = output[0]
但我想搜索输入数组,然后获取输入的输出字符串。
可能是for语句? 我一直在尝试寻找不同的方法,但是可能有人会知道该怎么做!
感谢您获得的任何帮助!
编辑:
为了澄清,如果有人使用过IRC,它就是我正在使用的,所以我需要检查消息并将它们与输入数组或对象进行比较,然后将字符串输出到另一个数组或对象中的匹配键。
正如@FelixKling所说, indexOf
将起作用。 但是,您并不总是希望采用这样的方法,尤其是当您拥有大型数组时。 原因是indexOf
会遍历数组以找到匹配项,如果有大数组可能需要一段时间。 在“大O”中,运算为O(n)
。
通常,如果要查找,则应使用JavaScript对象,这会给您O(1)
复杂性:
var outputForInput = {
"hi": "hello",
"welcome": "thank you"
};
var input = "hi";
var output = outputForInput[input];
有两种解决方案。
首先是使用一个对象:
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
此方法的问题在于,如果查询字符串在数组中不存在,则indexOf返回-1。 这将引发错误,而obj [“ nonexistantkey”]仅返回未定义。
通过在循环中测试值,您将获得索引,可以使用该索引在输出Array上返回相同的点。
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)];
}
或者,如果您遵循Jacob的建议(我建议):
function getResponse(inputStr){
return outputForInput[inputStr];
}
请注意,如果输入字符串不匹配,则这两个参数都将返回undefined
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.