一個物件的索引可以是數字也可以是字串。是否影響速度?
LeetCode一道題目「Longest String Without Repeating Characters」中,我使用了以下方法解題:
===
/**
* @param {string} s
* @return {number}
*/
var lengthOfLongestSubstring = function(s) {
let head = -1;
let max = 0;
let last = {};
for (let i = 0, len = s.length; i < len; i++) {
let c = <INDEX>; // INDEX
if (!(c in last)) {
last[c] = -1;
} else {
head = Math.max(head, last[c]);
}
max = Math.max(max, i - head);
last[c] = i;
}
return max;
};
===.
在<INDEX>那邊我有了兩個版本:一個是直接拿s[i]當索引的字元版本;另一個是用s.charCodeAt(i)取得ASCII碼,以數值作為索引的數值版本。
字元版本跑了160ms,數值版只要76~80ms,有著十分明顯的差距。
因此,若求速度的話,還是要用數值索引會比較適當。
2018年12月14日 星期五
2018年12月13日 星期四
[JavaScript] require
為了做模組化,可以在module.js中用export把想要的變數匯出。在main.js中用import匯入。
===
// module.jslet variable;
let func;
export {vairable, func};
// main.js
import {variable, func} from "module.js";
===.
可惜的是這個標準支援度不高,在NodeJS中也無法使用。因此可以用require代替。
基本上跟export/import是一樣的道理。
===
// module.js
let variable;
let func;
exports.variable = variable;
exports.func = func;
// main.js
const {variable, func} = require("module.js");
===.
===
// module.jslet variable;
let func;
export {vairable, func};
// main.js
import {variable, func} from "module.js";
===.
可惜的是這個標準支援度不高,在NodeJS中也無法使用。因此可以用require代替。
基本上跟export/import是一樣的道理。
===
// module.js
let variable;
let func;
exports.variable = variable;
exports.func = func;
// main.js
const {variable, func} = require("module.js");
===.
訂閱:
文章 (Atom)
[HTML] ribody
怕自己忘記,稍微紀錄一下。 各種各種理由(其中一個就是Vue,不能綁定在body上),導致時常需要一個包在body中的div,當作body來用,像這樣: === <body> <div id="divBody"> ...
-
在Node.js伺服器上要跟Microsoft的SQL Server連線需要套件mssql。 只談連線的話基本上是這樣做的。 === const mssql = require("mssql"); var dbConfig = { user: ...
-
首先要 安裝Git 。然後安裝VS Code(Visual Studio Code)。 先登入並在GitHub網頁上建立倉庫(repository),複製倉庫網址,在本機系統上找到要放置倉庫的目錄,右鍵開啟Git Bash,輸入指令 === git clone <倉庫...
-
let random = (start, end, base = 1) => { if (Array.isArray(start)) { return start[random(0, start.length - 1)]; } else...