iT邦幫忙

2023 iThome 鐵人賽

DAY 4
0
Software Development

LeetCode-30 Days of JavaScript系列 第 4

LeetCode JS30-Day04 | 打倒第一隻史萊姆!(用閉包) - 2665.Counter II

  • 分享至 

  • xImage
  •  

擲出前兩天學到的閉包來解決這一關卡(►__◄)

Day04 - 2665.Counter II EASY

Description❓

Write a function createCounter. It should accept an initial integer init. It should return an object with three functions.

The three functions are:

  • increment() increases the current value by 1 and then returns it.
  • decrement() reduces the current value by 1 and then returns it.
  • reset() sets the current value to init and then returns it.

宣告createCounter函示,該函示先接受初始整數init作為參數,它應該返回有三個函示的物件。

  • increment() 將當前的值+1然後返回
  • decrement() 將當前的值-1然後返回
  • reset() 將當前的值重置為init後返回

Points

Solution✍️

[ ▶️挑戰這一題 ] [ 本日代碼 ]

  1. 這一題由於調用init()時需要return 參數i,所以在外部作用域宣告一個變數initi初始值存起來。
  2. 依照增減的邏輯使用前置遞增運算子,讓返回的值是新的數值。
createCounter=(i)=>{
   let init = i;
   return {
      increment:()=>++i,
      decrement:()=>--i,
      reset:()=>{
         i=init;
         return i
      },
   }
}

Testcase

let counter = createCounter(5);
let case1 = [
   counter.increment(),
   counter.reset(),
   counter.decrement()
]
console.log(case1);// [6, 5, 4]
counter = createCounter(0);
let case2 = [
   counter.increment(),
   counter.increment(),
   counter.decrement(),
   counter.reset(),
   counter.reset(),
];
console.log(case2);// [1, 2, 1, 0, 0]

上一篇
LeetCode JS30-Day03 |設置閉包方法 - 2704.To Be Or Not To Be
下一篇
LeetCode JS30-Day05 | 轉換陣列元素- 2635. Apply Transform Over Each Element in Array
系列文
LeetCode-30 Days of JavaScript30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言