Array 與 Object 擴充
Array.prototype 與 Object.prototype 新增的負索引存取、聚合與存在判斷。
Array
原始碼:src/prototype/Array.ts
| 方法/屬性 | 說明 |
|---|---|
arr.$sum |
透過 reduce 計算數值陣列總和 |
arr.$shuffle |
原地 Fisher–Yates 洗牌;回傳 this |
arr.$map |
每個項目的 value → index 組成的 Map |
arr._(value, index?) |
支援負索引的插入(splice);省略 index 時附加至末尾 |
arr.$(index) |
支援負索引的讀取 |
arr.$i(target) |
indexOf(target),找不到時回傳 undefined 而非 -1 |
arr.$_(index) |
支援負索引的移除(splice) |
arr.$$(target?) |
無參數時判斷非空,有參數時判斷 target 是否存在 |
arr.$req(body) |
將陣列以 / 串接為 URL 路徑片段,再對該路徑呼叫 $req |
Object
原始碼:src/prototype/Object.ts(擴充 Object.prototype,故適用於純物件)
| 方法/屬性 | 說明 |
|---|---|
obj.length |
Object.keys(this).length |
obj.$keys / obj.$values |
Object.keys(this) / Object.values(this) |
obj.$map |
自身可列舉屬性組成的 Map |
obj.forEach(cb) |
類陣列迭代:對自身可列舉屬性執行 cb(key, value) |
obj._(key, value, replace = true) |
條件式設定——僅當 replace 為 true 時才覆蓋已存在的鍵 |
obj.$$(key?) |
有 key 時為 hasOwnProperty(key),否則為 this.length > 0 |
範例
負索引從尾端計算;obj._ 在 replace = false 時保留既有值。
<script>
const list = [10, 20, 30];
console.log(list.$sum, list.$(-1), list.$i(20), list.$i(99));
list._("x", -1);
console.log(list);
list.$_(0);
console.log(list, list.$$(30));
const dic = { a: 1 };
dic._("a", 2, false);
dic._("b", 3);
console.log(dic, dic.length, dic.$keys, dic.$$("b"));
</script>