摘要:也就是說(shuō),它通過(guò)計(jì)算一個(gè)關(guān)于鍵值的函數(shù),將所需查詢(xún)的數(shù)據(jù)映射到表中一個(gè)位置來(lái)訪問(wèn)記錄,這加快了查找速度。這個(gè)映射函數(shù)稱(chēng)做散列函數(shù),存放記錄的數(shù)組稱(chēng)做散列表。如果對(duì)象沒(méi)有該實(shí)例化該處為一對(duì)象如果該不存在就增加一個(gè)數(shù)量
本系列一系列文章的收集關(guān)于javascript中的數(shù)據(jù)結(jié)構(gòu)
如果你對(duì)數(shù)據(jù)結(jié)構(gòu)不太熟悉 可以看這篇文章
如果你只想看代碼 可以看這篇文章
如果你只想star 可以去這里
在計(jì)算機(jī)科學(xué)或信息學(xué)中,數(shù)據(jù)結(jié)構(gòu)(英語(yǔ):data structure)是計(jì)算機(jī)中存儲(chǔ)、組織數(shù)據(jù)的方式 From Wikipedia
完整wiki解釋地址
沒(méi)有一種數(shù)據(jù)結(jié)構(gòu)是完美的 你需要了解所有數(shù)據(jù)結(jié)構(gòu)的優(yōu)勢(shì)和劣勢(shì) 合理的運(yùn)用數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)自己目標(biāo)
復(fù)雜性算法的復(fù)雜性是算法優(yōu)勢(shì)和劣勢(shì)的一種體現(xiàn) 算法復(fù)雜性包括空間復(fù)雜性和時(shí)間復(fù)雜性
空間復(fù)雜性大概或許就是數(shù)據(jù)結(jié)構(gòu)所需要使用的內(nèi)存數(shù)量
時(shí)間復(fù)雜性大概或許就是時(shí)間啦
依賴(lài)選擇的數(shù)據(jù)
An Array data structure, or simply an Array, is a data structure consisting of a collection of elements (values or variables), each identified by at least one array index or key. The simplest type of data structure is a linear array, also called one-dimensional array. From Wikipedia
js 有array結(jié)構(gòu)不過(guò)不是很強(qiáng)大 我們可以自定義一下一個(gè)加強(qiáng)版
class MyArray { constructor() { this.array = []; } add(data) { return this.array.push(data); } remove(data) { // 如果找到數(shù)據(jù)就刪除 if(~this.array.indexOf(data)) { this.array.splice(this.array.indexOf(data), 1); } } search(data) { // 如果找打數(shù)據(jù)就返回 if(~this.array.indexOf(data)) { return this.array.indexOf(data); } else { return null; } } getAtIndex(index) { return this.array[index]; } length() { return this.array.length; } print() { console.log(this.array.reduce(function(prev, curr) { return prev + curr + " "; }, "").trim()); } }hashtable
散列表(Hash table,也叫哈希表),是根據(jù)關(guān)鍵字(Key value)而直接訪問(wèn)在內(nèi)存存儲(chǔ)位置的數(shù)據(jù)結(jié)構(gòu)。也就是說(shuō),它通過(guò)計(jì)算一個(gè)關(guān)于鍵值的函數(shù),將所需查詢(xún)的數(shù)據(jù)映射到表中一個(gè)位置來(lái)訪問(wèn)記錄,這加快了查找速度。這個(gè)映射函數(shù)稱(chēng)做散列函數(shù),存放記錄的數(shù)組稱(chēng)做散列表。
class HashTable { constructor(size) { this.values = {}; this.numberOfValues = 0; this.size = size; } add(key, value) { var hash = this.calculateHash(key); // 如果對(duì)象沒(méi)有該key 實(shí)例化該key處為一對(duì)象 if(!this.values.hasOwnProperty(hash)) { this.values[hash] = {}; } // 如果該key不存在 就增加一個(gè)數(shù)量 if(!this.values[hash].hasOwnProperty(key)) { this.numberOfValues++; } this.values[hash][key] = value; } remove(key) { var hash = this.calculateHash(key); if(this.values.hasOwnProperty(hash) && this.values[hash].hasOwnProperty(key)) { delete this.values[hash][key]; this.numberOfValues--; } } calculateHash(key) { return key.toString().length % this.size; } search(key) { var hash = this.calculateHash(key); if(this.values.hasOwnProperty(hash) && this.values[hash].hasOwnProperty(key)) { return this.values[hash][key]; } else { return null; } } length() { return this.numberOfValues; } print() { var string = ""; for(var value in this.values) { for(var key in this.values[value]) { string += this.values[value][key] + " "; } } console.log(string.trim()); } }
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/86274.html
摘要:寫(xiě)在前面目前專(zhuān)注深入學(xué)習(xí),特花了點(diǎn)時(shí)間整理了一些前端學(xué)習(xí)相關(guān)的書(shū)籍。大致分為以下大系列系列系列基礎(chǔ)系列應(yīng)用系列進(jìn)階系列類(lèi)庫(kù)系列框架系列。這些書(shū)籍在這里免費(fèi)提供下載,有興趣的一起學(xué)習(xí)。 寫(xiě)在前面 目前專(zhuān)注深入JavaScript學(xué)習(xí),特花了點(diǎn)時(shí)間整理了一些前端學(xué)習(xí)相關(guān)的書(shū)籍。 大致分為以下7大系列:CSS系列、DOM系列、JavaScript基礎(chǔ)系列、JavaScript應(yīng)用系列、Ja...
摘要:專(zhuān)題系列共計(jì)篇,主要研究日常開(kāi)發(fā)中一些功能點(diǎn)的實(shí)現(xiàn),比如防抖節(jié)流去重類(lèi)型判斷拷貝最值扁平柯里遞歸亂序排序等,特點(diǎn)是研究專(zhuān)題之函數(shù)組合專(zhuān)題系列第十六篇,講解函數(shù)組合,并且使用柯里化和函數(shù)組合實(shí)現(xiàn)模式需求我們需要寫(xiě)一個(gè)函數(shù),輸入,返回。 JavaScript 專(zhuān)題之從零實(shí)現(xiàn) jQuery 的 extend JavaScritp 專(zhuān)題系列第七篇,講解如何從零實(shí)現(xiàn)一個(gè) jQuery 的 ext...
摘要:設(shè)計(jì)模式資源整理操作符小知識(shí)點(diǎn)實(shí)現(xiàn)發(fā)郵件功能數(shù)據(jù)結(jié)構(gòu)與算法資源整理跨域函數(shù)的合成與柯里化系列之防抖節(jié)流系列之正則系列之系列之系列之編碼系列之系列之操作符對(duì)象中的坐標(biāo)檢測(cè)對(duì)象或數(shù)組系列之機(jī)制系列之構(gòu)造對(duì)象系列之總結(jié)系列之淺復(fù)制與深復(fù)制系列之對(duì) Javascript設(shè)計(jì)模式資源整理JS操作符JS小知識(shí)點(diǎn)JS實(shí)現(xiàn)發(fā)郵件功能數(shù)據(jù)結(jié)構(gòu)與算法資源整理跨域函數(shù)的合成與柯里化JS系列之防抖節(jié)流JS系列...
摘要:為了方便大家共同學(xué)習(xí),整理了之前博客系列的文章,目前已整理是如何工作這個(gè)系列,可以請(qǐng)猛戳博客查看。以下列出該系列目錄,歡迎點(diǎn)個(gè)星星,我將更友動(dòng)力整理理優(yōu)質(zhì)的文章,一起學(xué)習(xí)。 為了方便大家共同學(xué)習(xí),整理了之前博客系列的文章,目前已整理 JavaScript 是如何工作這個(gè)系列,可以請(qǐng)猛戳GitHub博客查看。 以下列出該系列目錄,歡迎點(diǎn)個(gè)星星,我將更友動(dòng)力整理理優(yōu)質(zhì)的文章,一起學(xué)習(xí)。 J...
摘要:以和為例,說(shuō)明中的數(shù)字?jǐn)?shù)據(jù)如何轉(zhuǎn)換為二進(jìn)制數(shù)據(jù)。對(duì)象用來(lái)表示通用的固定長(zhǎng)度的原始二進(jìn)制數(shù)據(jù)緩沖區(qū)。中的數(shù)字?jǐn)?shù)據(jù)如何轉(zhuǎn)換為二進(jìn)制數(shù)據(jù)對(duì)和有了一個(gè)大概的了解,下面讓我們來(lái)看下它是如何進(jìn)行二進(jìn)制數(shù)據(jù)操作的。 概述 本文主要通過(guò)對(duì)JavaScript中數(shù)字?jǐn)?shù)據(jù)與二進(jìn)制數(shù)據(jù)之間的轉(zhuǎn)換,讓讀者能夠了解在JavaScript中如何對(duì)數(shù)字類(lèi)型(包括但不限于Number類(lèi)型)進(jìn)行處理。 二進(jìn)制數(shù)據(jù)在日常...
摘要:總結(jié)通過(guò)使用和,我們能夠在數(shù)據(jù)和二進(jìn)制數(shù)據(jù)中進(jìn)行互相轉(zhuǎn)換。下一篇系列相關(guān)的博客,將會(huì)介紹如何通過(guò)來(lái)向后端傳遞二進(jìn)制數(shù)據(jù),以及如何處理通過(guò)收到的二進(jìn)制數(shù)據(jù)。 概述 上一篇博客我們說(shuō)到了如何進(jìn)行數(shù)字類(lèi)型(如Short、Int、Long類(lèi)型)如何在JavaScript中進(jìn)行二進(jìn)制轉(zhuǎn)換,如果感興趣的可以可以閱讀本系列第二篇博客——WebSocket系列之JavaScript中數(shù)字?jǐn)?shù)據(jù)如何轉(zhuǎn)換為...
閱讀 1462·2021-09-02 19:23
閱讀 1613·2021-08-11 11:19
閱讀 654·2019-08-30 15:55
閱讀 1666·2019-08-30 12:50
閱讀 2255·2019-08-30 11:23
閱讀 2196·2019-08-29 13:13
閱讀 1514·2019-08-28 18:13
閱讀 3355·2019-08-26 11:53