簡體   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