1 回答

TA貢獻(xiàn)1793條經(jīng)驗(yàn) 獲得超6個(gè)贊
我很困惑為什么它不返回任何東西。
你的函數(shù)正在返回一些東西,它返回一個(gè)數(shù)組,如下所示:
[undefined, undefined]
您需要確保用于console.log()將返回值記錄到控制臺(tái)。你之所以得到這樣的結(jié)果是undefined因?yàn)槟闶褂昧薻ey[obj]. 當(dāng)您使用for...in循環(huán)時(shí),key代表對(duì)象中的鍵,這意味著您需要使用obj[key]
我走在正確的軌道上嗎?
你是對(duì)的,你需要一個(gè)循環(huán),但是,你循環(huán)了錯(cuò)誤的東西。該問題要求您創(chuàng)建一個(gè)新數(shù)組,其中原始數(shù)組中的元素將替換為對(duì)象中相應(yīng)的值。這意味著您需要循環(huán) 中的元素arr,并將每個(gè)元素視為中的鍵obj。使用該鍵,您可以obj[key]從對(duì)象中獲取該鍵的相應(yīng)值。您還需要確保鍵位于對(duì)象內(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;因?yàn)檫@只是將函數(shù)內(nèi)的局部變量重新分配給您正在創(chuàng)建的arr新數(shù)組。這并沒有取得多大成果,因?yàn)槟诋?dāng)前代碼中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()并利用對(duì)象中的每個(gè)值都是true 的事實(shí),這意味著如果您從對(duì)象中得到一個(gè)falseundefined
值,它一定是,允許您默認(rèn)值:
const elementReplace = (arr, obj) => arr.map(key => obj[key] || key);
添加回答
舉報(bào)