Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在javascript中从数组中获取输出?_Javascript_Arrays_Node.js - Fatal编程技术网

如何在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]但是我想搜索输入数组,然后获取输入的输出字符串 可能需要一份声明吗?我一直在试图找到不同的

好的,我一直在学习javascript,我知道最基本的东西,但我想知道如何根据另一个数组中的文本从数组中获取输出

例如:

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];