[英]Make a new array by extracting each value from each object in the 1st array using the references in the 2nd array (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]
}
}
}
當然,這取決於您的str
和int
數組中匹配的值的順序。
您只需要一個循環即可找到給定單詞的索引。 如果找到,則使用實際索引從另一個數組返回值。
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.