尤川豪   ·  5年前
445 貼文  ·  275 留言

簡易的 JavaScript 陣列 ID 不重複演算法

針對一串同類型的資料進行 CRUD 操作時,通常會需要類似 ID 的東西

如果完全在前端進行,臨時要產生簡單的 ID 該怎麼做?

第一次看到這種 code 是在

https://github.com/reduxjs/redux/blob/master/examples/todomvc/src/reducers/todos.js

//...
    case ADD_TODO:
      return [
        ...state,
        {
          id: state.reduce((maxId, todo) => Math.max(todo.id, maxId), -1) + 1,
          completed: false,
          text: action.text
        }
      ]
//...

可以分三步理解這段 code

1. Math.max(a, b)

這應該很單純,就是從 a 跟 b 中取出比較大的回傳

2. Array.reduce()

https://developer.mozilla.org/zh-TW/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce

這屬於 functional programming 中的 Fold (higher-order function) 觀念

...

(本文待補完)

  分享   共 1,411 次點閱
按了喜歡:
共有 0 則留言
還沒有人留言。歡迎分享您的觀點、或是疑問。
您的留言
尤川豪
445 貼文  ·  275 留言

Devs.tw 是讓工程師寫筆記、網誌的平台。隨手紀錄、寫作,方便日後搜尋!

歡迎您一起加入寫作與分享的行列!

查看所有文章