国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

JS使用技巧1——使用fast-json-stringify代替JSON.stringify

cnTomato / 1582人閱讀

摘要:使用的思考使用過對(duì)象的程序員最常做的一項(xiàng)工作便是,將對(duì)象轉(zhuǎn)化為字符串。該字符串的用途很多,例如可以使用在的中,在多個(gè)頁面間進(jìn)行傳遞。因?yàn)槟J绞枪潭ǖ?,那么定義模式的空間開銷一定比使用該模式生成字符串的時(shí)間開銷代價(jià)要小很多。

使用JSON.stringify的思考

使用過JSON對(duì)象的程序員最常做的一項(xiàng)工作便是,將JSON對(duì)象轉(zhuǎn)化為字符串。該字符串的用途很多,例如可以使用在WEB的URL中,在多個(gè)頁面間進(jìn)行傳遞。

const obj = { id: 1, name: "object" };
const jsonStr = JSON.stringify(obj);    // 轉(zhuǎn)換為字符串
const json = JSON.parse(jsonStr);     // 解析字符串為JSON對(duì)象

對(duì)于這個(gè)轉(zhuǎn)換過程我們用的太得心應(yīng)手,所以很少再去思考這中間是否還有需要優(yōu)化的地方。
其實(shí)只要稍微深入思考一點(diǎn),即使不讀源代碼,我們也能得出這樣一個(gè)結(jié)論:在JSON對(duì)象轉(zhuǎn)化為字符串時(shí),是需要去識(shí)別某種模式的。

對(duì)于string類型,需要用雙引號(hào)(")去標(biāo)注

對(duì)于number類型,不需要標(biāo)注

對(duì)于object類型,它的每個(gè)屬性間需要用逗號(hào)(,)去分隔,并且需要雙引號(hào)(")進(jìn)行標(biāo)注

對(duì)于array類型,則還需要加上"["和"]"來表示

例如:

const obj = [{ id: 1, name: "kobe" }, { id: 2, name: "wade" }];
const jsonStr = JSON.stringify(obj);  //   結(jié)果為:[{"id":"1,"name":"kobe"},{"id":2,"name":"wade"}]

所以,如果要你去實(shí)現(xiàn)這樣一個(gè)stringify的過程,這些類型的識(shí)別和標(biāo)注都是不可避免的花銷。

使用fast-json-stringify

就是在這樣一個(gè)邏輯小片段上,fast-json-stringify想到了提高stringify效率的方案:提前定義要轉(zhuǎn)換對(duì)象的模式,那么就可以省去解析模式的時(shí)間開銷。

const fastJson = require("fast-json-stringify");
const stringify = fastJson({
  title: "player",
  type: "object",
  properties: {
    name: { type: "string" },
    position: { type: "string" },
    age: { type: "integer" }
  }
});
console.log(stringify({ name: "kobe", position: "SG", age: 39 }));  //  {"name":"kobe","position":"SG","age":39}


從官網(wǎng)的介紹來看,在某些情況下使用fast-json-stringify的效果可以比JSON.stringify快接近10倍!

使用場(chǎng)景

基于fast-json-stringify的優(yōu)化內(nèi)容,我們很容易得出這樣一個(gè)結(jié)論:在所有經(jīng)常需要對(duì)某些固定模式進(jìn)行stringify的場(chǎng)合,都適合使用fast-json-stringify。因?yàn)槟J绞枪潭ǖ?,那么定義模式的空間開銷一定比使用該模式生成字符串的時(shí)間開銷代價(jià)要小很多。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/99919.html

相關(guān)文章

  • 如何提升JSON.stringify()的性能?

    摘要:然后,生成的完整的字符串大致如下以上是一系列通用的鍵值轉(zhuǎn)換方法就是的主體函數(shù)其他屬性的拼接最后,將字符串傳入構(gòu)造函數(shù)來創(chuàng)建相應(yīng)的函數(shù)。 1. 熟悉的JSON.stringify() 在瀏覽器端或服務(wù)端,JSON.stringify()都是我們很常用的方法: 將 JSON object 存儲(chǔ)到 localStorage 中; POST 請(qǐng)求中的 JSON body; 處理響應(yīng)體中的 ...

    tomlingtm 評(píng)論0 收藏0
  • Fastfiy基礎(chǔ)指南

    摘要:什么是是一個(gè)高度專注于以最少開銷和強(qiáng)大的插件架構(gòu),為開發(fā)人員提供最佳體驗(yàn)的框架。它受到了和的啟發(fā),是目前最快的框架之一。 什么是 Fastify? Fastify 是一個(gè)高度專注于以最少開銷和強(qiáng)大的插件架構(gòu),為開發(fā)人員提供最佳體驗(yàn)的 Web 框架。 它受到了 Hapi 和 Express 的啟發(fā),是目前最快的 Node 框架之一。 Fastify 獨(dú)特的將 JSON Schema 應(yīng)...

    svtter 評(píng)論0 收藏0
  • JS學(xué)習(xí)之JSON數(shù)據(jù)格式

    摘要:簡析簡介,是一種數(shù)據(jù)格式而不是編程語言,它和并沒有從屬關(guān)系,任何編程語言都可以使用語法規(guī)則分為三類簡單值與語法相同,可以在中表示字符串,數(shù)值,布爾值和,但是其不支持?jǐn)?shù)值字符串對(duì)象鍵值和鍵名都得用雙引號(hào)數(shù)組解析和序列化目標(biāo)對(duì)象,過濾器,字符串 JSON簡析 1.簡介 JSON,是一種數(shù)據(jù)格式而不是編程語言,它和JavaScrip并沒有從屬關(guān)系,任何編程語言都可以使用JSON; 2.語法...

    isaced 評(píng)論0 收藏0
  • JSON:如果你愿意一層一層剝開我的心,你會(huì)發(fā)現(xiàn)...這里水很深——深入理解JSON

    摘要:說句玩笑話,如果是基于的,可能就叫了,形式可能就是這樣的了,如果這樣,那么可能現(xiàn)在是和比較密切了。此外,還有一個(gè)函數(shù),我們較少看到,但是它會(huì)影響。 我們先來看一個(gè)JS中常見的JS對(duì)象序列化成JSON字符串的問題,請(qǐng)問,以下JS對(duì)象通過JSON.stringify后的字符串是怎樣的?先不要急著復(fù)制粘貼到控制臺(tái),先自己打開一個(gè)代碼編輯器或者紙,寫寫看,寫完再去仔細(xì)對(duì)比你的控制臺(tái)輸出,如果有...

    Baaaan 評(píng)論0 收藏0
  • 給初學(xué)者:JavaScript 中數(shù)組操作注意點(diǎn)

    摘要:使用遍歷數(shù)組有三點(diǎn)問題遍歷順序不固定引擎不保證對(duì)象的遍歷順序。作為原生函數(shù),和自身操作字符串的速度是很快的。由于沒有返回值返回,所以它的回調(diào)函數(shù)通常是包含副作用的,否則這個(gè)寫了毫無意義。接受一個(gè)回調(diào)函數(shù),你可以提前,相當(dāng)于手寫循環(huán)中的。 不要用 for_in 遍歷數(shù)組 這是 JavaScript 初學(xué)者常見的誤區(qū)。for_in 用于遍歷對(duì)象中包括原型鏈上的所有可枚舉的(enumerab...

    tianyu 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<