簡體   English   中英

有沒有辦法使用第一個數組作為 Javascript 中的參考在第二個數組中獲取相應的索引值?

[英]Is there a way to get corresponding index value in a 2nd array using the 1st array as a reference in Javascript?

一般來說,我對算法和編程非常陌生。 我可能需要比一般人更多的解釋。 提前致歉。

我的目標是根據提供的字符串創建一個返回數字的 function。 有人告訴我這可以使用循環來完成。 我相信我的錯誤在於 if 語句。 但是,似乎無法弄清楚。 如果有人能提供幫助,我會很高興。

function word(s) {
  let str = ["one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "zero"];
  let int = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0];

  for (let j = 0; j < int.length; j++) {
    for (let i = 0; i < str.length; i++) {
      if (s === str[i]) {
        return int[j]
      }
    }
  }
}

本質上,您要做的是獲取str數組中輸入s的索引,並返回int數組中相同索引處的項目。 您只需一個循環即可完成此操作:

function word(s) {
    let str = ["one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "zero"];
    let int = [1,2,3,4,5,6,7,8,9,0];
  
    for (let j = 0; j < int.length; j++){
        if (s === str[j]){
         return int[j]
        }
    }
}

當然,這取決於您的strint數組中匹配的值的順序。

您只需要一個循環即可找到給定單詞的索引。 如果找到,則使用實際索引從另一個數組返回值。

for (let i = 0; i < str.length; i++){
    if (s === str[i]) return int[i];
}

實際上,您也不需要循環。 您可以重新排列字符串並根據數組中單詞的排列返回索引。

另一種選擇是使用Map 對象,它允許創建鍵值對列表。 然后,如果知道密鑰,則可以立即獲取該值。

在幕后,這通常通過密鑰上的哈希算法完成,在這種情況下,查找密鑰不涉及遍歷所有密鑰,而是從密鑰生成哈希,然后使用哈希直接查找值在列表中。 (它比這更復雜一些,但您可以通過搜索數組散列技術找到更多信息。)

所以,第一步是初始化 Map 對象,將寫好的數字作為鍵映射到數字的實際值。

然后,一旦創建此映射,對於需要查找的每個實例,它只涉及從映射中獲取值。

 function createMap( keyArray, valueArray ) { let map = new Map(); for ( let i = 0; i < keyArray.length; i++ ) { map.set( keyArray[ i ], valueArray[ i ] ); } return map; } let myMap = createMap( ["one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "zero"], [1, 2, 3, 4, 5, 6, 7, 8, 9, 0] ) console.log( myMap.get( "four" ) ); console.log( myMap.get( "two" ) );

然后,這具有直接返回與鍵對應的值的明顯優勢,而不必每次都搜索鍵列表......

工作演示:

 function getStringNumber(word) { let str = ["one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "zero"]; let int = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]; for (let i = 0; i < str.length; i++) { if (word === str[i]) return int[i]; } } console.log(getStringNumber('nine')?? 'No word found;');

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM