繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM