1 回答

TA貢獻1793條經(jīng)驗 獲得超6個贊
我很困惑為什么它不返回任何東西。
你的函數(shù)正在返回一些東西,它返回一個數(shù)組,如下所示:
[undefined, undefined]
您需要確保用于console.log()將返回值記錄到控制臺。你之所以得到這樣的結(jié)果是undefined因為你使用了key[obj]. 當您使用for...in循環(huán)時,key代表對象中的鍵,這意味著您需要使用obj[key]
我走在正確的軌道上嗎?
你是對的,你需要一個循環(huán),但是,你循環(huán)了錯誤的東西。該問題要求您創(chuàng)建一個新數(shù)組,其中原始數(shù)組中的元素將替換為對象中相應(yīng)的值。這意味著您需要循環(huán) 中的元素arr,并將每個元素視為中的鍵obj。使用該鍵,您可以obj[key]從對象中獲取該鍵的相應(yīng)值。您還需要確保鍵位于對象內(nèi)部,以查看它是否包含值。
邏輯如下:
FUNCTION elementReplace(arr, obj)
? result <- []
? FOR elemKey in arr DO:
? ? ?IF elemKey is a key of obj THEN:
? ? ? ?push obj[elemKey] to result
? ? ?ELSE:
? ? ? ?push elemKey to result
? ? ?END IF
? END FOR
END FUNCTION
我不確定我是否應(yīng)該執(zhí)行 arr = result.
您不需要這樣做,arr = result;因為這只是將函數(shù)內(nèi)的局部變量重新分配給您正在創(chuàng)建的arr新數(shù)組。這并沒有取得多大成果,因為您在當前代碼中result沒有做任何事情。arr
解決方案(在揭曉之前先嘗試上述方法):
function elementReplace(arr, obj) {
? ?const result = [];
? ?for (const elemKey of arr) { // iterate through each element in the array
? ? ?if (obj.hasOwnProperty(elemKey)) // check if object has key
? ? ? ?result.push(obj[elemKey]);
? ? ?else
? ? ? ?result.push(elemKey);
? ?}
? ?return result;
?}
?const arr1 = ["LeBron James", "Lionel Messi", "Serena Williams"];
?const obj1 = {
? ?"Serena Williams": "tennis",? ?"LeBron James":
? ?"basketball"
?};
?console.log(elementReplace(arr1, obj1)); // returns ["basketball", "Lionel Messi", "tennis"]
?
或者,您可以使用Array.prototype.map()并利用對象中的每個值都是true 的事實,這意味著如果您從對象中得到一個falseundefined
值,它一定是,允許您默認值:
const elementReplace = (arr, obj) => arr.map(key => obj[key] || key);
添加回答
舉報