如何在javascript中从数组中获取输出?
好的,我一直在学习javascript,我知道最基本的东西,但我想知道如何根据另一个数组中的文本从数组中获取输出 例如:如何在javascript中从数组中获取输出?,javascript,arrays,node.js,Javascript,Arrays,Node.js,好的,我一直在学习javascript,我知道最基本的东西,但我想知道如何根据另一个数组中的文本从数组中获取输出 例如: var input = ["hi", "welcome"]; var output = ["hello", "thank you"]; 因此,如果我输入“hi”,我希望返回的是“hello”,与“welcome”和“thank you”相同 或者input[0]=output[0]但是我想搜索输入数组,然后获取输入的输出字符串 可能需要一份声明吗?我一直在试图找到不同的
var input = ["hi", "welcome"];
var output = ["hello", "thank you"];
因此,如果我输入“hi”,我希望返回的是“hello”,与“welcome”和“thank you”相同
或者input[0]=output[0]
但是我想搜索输入数组,然后获取输入的输出字符串
可能需要一份声明吗?我一直在试图找到不同的方法,但可能有人知道如何做到这一点
我很感激得到的任何帮助
编辑:为了澄清,如果有人使用过IRC,这就是我正在使用的,因此我需要检查消息并将其与输入数组或对象进行比较,然后在另一个数组中输出字符串或对象中的匹配键。通过测试循环中的值,您将获得索引,您可以使用它返回输出数组上的相同点
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'
函数输入输出(a1、val、a2){
对于(var i=0,l=a1.length;i,通过测试循环中的值,您将获得索引,您可以使用该索引返回输出数组中的相同点
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'
函数输入输出(a1、val、a2){
对于(var i=0,l=a1.length;i,正如@FelixKling所说,indexOf
将起作用。但是,您并不总是希望采用这样的方法,尤其是在您有大数组的情况下。原因是indexOf
将遍历数组以找到匹配项,如果有大数组,则可能需要一段时间。在“大O”中,操作为O(n)
通常,如果需要查找,应该使用JavaScript对象,这会给您O(1)
复杂性:
var outputForInput = {
"hi": "hello",
"welcome": "thank you"
};
var input = "hi";
var output = outputForInput[input];
正如@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
您可以使用该函数获取一组键
要对数组执行相同的操作,请使用本机函数。给定数组,代码如下:
output[input.indexOf("hi")] //returns hello
此方法的问题是,如果数组中不存在查询字符串,indexOf将返回-1。这将导致抛出错误,而obj[“nonexistantkey”]只返回未定义的值。有两种解决方案
function getResponse(inputStr){
return output[input.indexOf(inputStr)];
}
第一种是使用对象:
var obj = {"hi":"hello","welcome":"thank you"}
并通过以下方式访问数据:
obj["hi"]; //returns hello
obj["welcome"]; //returns thank you
您可以使用该函数获取一组键
要对数组执行相同的操作,请使用本机函数。给定数组,代码如下:
output[input.indexOf("hi")] //returns hello
此方法的问题是,如果数组中不存在查询字符串,indexOf将返回-1。这将导致抛出错误,而obj[“nonexistantkey”]只返回未定义的
function getResponse(inputStr){
return output[input.indexOf(inputStr)];
}
或者如果你听从雅各布的建议(我推荐):
请注意,如果输入字符串不匹配,则其中任何一个都将返回undefined
或者如果你听从雅各布的建议(我推荐):
请注意,如果输入字符串不匹配,则其中任何一个都将返回undefined
。在input
中找到值的索引,并使用该索引访问output
。@FelixKling说了什么。var key=input.indexOf(“hi”);
然后…var outputVal=output[key]
在input
中找到值的索引,并使用该索引访问output
。@FelixKling所说的。var key=input.indexOf(“hi”);
然后…var outputVal=output[key];