2635. Apply Transform Over Each Element in Array

閱讀時間約 3 分鐘

今天要來嘗試的是,如何不用好用的Array.map 方法,來實現 Array.map 的功能。

What is Array.map

map() 方法會建立一個新的陣列,其內容為原陣列的每一個元素經由回呼函式運算後所回傳的結果之集合。

簡單來說就是把陣列內的每一個值,個別跑函式,把新的值回傳出成新的陣列,並不會取代原本的陣列。舉例來說:

let A = [1, 2, 3]

let B = A.map( function(n) {
return n*2
})

console.log(B) // [ 2, 4, 6 ]

(類似的 .forEach() 則是修改原有的陣列,並且不會輸出新的值)

題目

Given an integer array arr and a mapping function fn, return a new array with a transformation applied to each element.

The returned array should be created such that returnedArray[i] = fn(arr[i], i).

Please solve it without the built-in Array.map method.

 

Example 1:

Input: arr = [1,2,3], fn = function plusone(n) { return n + 1; }
Output: [2,3,4]
Explanation:
const newArray = map(arr, plusone); // [2,3,4]
The function increases each value in the array by one.

Example 2:

Input: arr = [1,2,3], fn = function plusI(n, i) { return n + i; }
Output: [1,3,5]
Explanation: The function increases each value by the index it resides in.

Example 3:

Input: arr = [10,20,30], fn = function constant() { return 42; }
Output: [42,42,42]
Explanation: The function always returns 42.

 

解題思路:

首先我們要設計一個函式 map,讓可以接受題目的 arr 跟 fn

function map(arr, fn){
}

因為題目要我們回傳一個新的陣列,所以在 function 內部要先創建一個空的陣列 returnedArray 來儲存結果
已經做過很多練習的我們,可以很快寫出如何在陣列的數量底下,重複跑程式的迴圈

function map(arr, fn) {
let returnedArray=[]
for (let i = 0; i < arr.length; i++) {}

接著,我們該如何讓 arr 跑過 fn 函式並添加到 returnedArray ,我們可以直接照著題目的描述:

function map(arr, fn) {
let returnedArray = [];
for (let i = 0; i < arr.length; i++) {
returnedArray[i] = (fn(arr[i], i));
}
return returnedArray;
}

完成!


    avatar-img
    0會員
    5內容數
    留言0
    查看全部
    avatar-img
    發表第一個留言支持創作者!
    高的沙龍 的其他內容
    (略),array 是用來將陣列的值進行累加,我們來看看怎麼怎麼達成吧: Given an integer array nums, a reducer function fn, and an initial value init, return the final result obtained
    問題 Write a function expect that helps developers test their code. It should take in any value val and return an object with the following two functio
    (略),array 是用來將陣列的值進行累加,我們來看看怎麼怎麼達成吧: Given an integer array nums, a reducer function fn, and an initial value init, return the final result obtained
    問題 Write a function expect that helps developers test their code. It should take in any value val and return an object with the following two functio
    你可能也想看
    Google News 追蹤
    Thumbnail
    這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
    Thumbnail
    Learn how to apply for a Youth Mobility Scheme visa, including eligibility requirements, application process, costs, and more.
    Thumbnail
    在之前的文章當中曾經提到過 JavaScript 中的物件有一個特別的機制:傳參考(Called by reference),如果正確性再高一點的話,則可以稱之為傳共享(Called by sharing)。
    Thumbnail
    在 Kotlin 程式語言中,當你使用 apply 函數時,你可以將其視為對該物件進行屬性設定的操作。 apply 函數讓你能夠直接在物件上執行多個設定操作,並返回該物件本身,讓程式碼更為簡潔而具有可讀性。這個函數特別適合在建立物件後立即對其屬性進行初始化或設定的情境下使用。
    Thumbnail
    宣告式管理是一種管理方法,其中您描述系統或資源的期望狀態,而不必關心實際如何達到該狀態。kubectl apply 命令在 Kubernetes 中實現了這種宣告式管理方式,以下是執行指令時的運作流程...
    26:6 耶穌在伯大尼長大痲瘋的西門家裏, 26:7 有一個女人拿著一玉瓶極貴的香膏來,趁耶穌坐席的時候,澆在他的頭上。 26:8 門徒看見就很不喜悅,說:「何用這樣的枉費呢! 26:9 這香膏可以賣許多錢,賙濟窮人。」 26:10 耶穌看出他們的意思,就說:「為甚麼難為這女人呢?她在我身上做的是一
    Thumbnail
    2023/03/08 【今日交易】 今天最懊惱的事情就是, 寶一鎖漲停,我居然沒跟到, 有點出乎意料所以反應不及阿~~~ 當沖含退:+2635
    Thumbnail
    對於這件事情,我有點感慨、卻又無感。無感的是,這件事情就像「股市攻上萬點」一樣,最大的價值是「發生過了」,但沒有太大的意義;有感的是,Apple的成長歷史跟我的超過半輩子有著密切關係。
    Thumbnail
    最近去Apple 直營店應該會發現全體員工都穿綠色制服,門口的蘋果LOGO也變成了綠葉。為了響應「世界地球日」,從4月19日開始,Apple 就發放給全體員工並換上這件綠色制服,目的是喚醒民眾對於「世界地球日」的重視。
    Thumbnail
    這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
    Thumbnail
    Learn how to apply for a Youth Mobility Scheme visa, including eligibility requirements, application process, costs, and more.
    Thumbnail
    在之前的文章當中曾經提到過 JavaScript 中的物件有一個特別的機制:傳參考(Called by reference),如果正確性再高一點的話,則可以稱之為傳共享(Called by sharing)。
    Thumbnail
    在 Kotlin 程式語言中,當你使用 apply 函數時,你可以將其視為對該物件進行屬性設定的操作。 apply 函數讓你能夠直接在物件上執行多個設定操作,並返回該物件本身,讓程式碼更為簡潔而具有可讀性。這個函數特別適合在建立物件後立即對其屬性進行初始化或設定的情境下使用。
    Thumbnail
    宣告式管理是一種管理方法,其中您描述系統或資源的期望狀態,而不必關心實際如何達到該狀態。kubectl apply 命令在 Kubernetes 中實現了這種宣告式管理方式,以下是執行指令時的運作流程...
    26:6 耶穌在伯大尼長大痲瘋的西門家裏, 26:7 有一個女人拿著一玉瓶極貴的香膏來,趁耶穌坐席的時候,澆在他的頭上。 26:8 門徒看見就很不喜悅,說:「何用這樣的枉費呢! 26:9 這香膏可以賣許多錢,賙濟窮人。」 26:10 耶穌看出他們的意思,就說:「為甚麼難為這女人呢?她在我身上做的是一
    Thumbnail
    2023/03/08 【今日交易】 今天最懊惱的事情就是, 寶一鎖漲停,我居然沒跟到, 有點出乎意料所以反應不及阿~~~ 當沖含退:+2635
    Thumbnail
    對於這件事情,我有點感慨、卻又無感。無感的是,這件事情就像「股市攻上萬點」一樣,最大的價值是「發生過了」,但沒有太大的意義;有感的是,Apple的成長歷史跟我的超過半輩子有著密切關係。
    Thumbnail
    最近去Apple 直營店應該會發現全體員工都穿綠色制服,門口的蘋果LOGO也變成了綠葉。為了響應「世界地球日」,從4月19日開始,Apple 就發放給全體員工並換上這件綠色制服,目的是喚醒民眾對於「世界地球日」的重視。