成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

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

cnTomato / 1596人閱讀

摘要:使用的思考使用過對象的程序員最常做的一項工作便是,將對象轉(zhuǎn)化為字符串。該字符串的用途很多,例如可以使用在的中,在多個頁面間進行傳遞。因為模式是固定的,那么定義模式的空間開銷一定比使用該模式生成字符串的時間開銷代價要小很多。

使用JSON.stringify的思考

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

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

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

對于string類型,需要用雙引號(")去標注

對于number類型,不需要標注

對于object類型,它的每個屬性間需要用逗號(,)去分隔,并且需要雙引號(")進行標注

對于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"}]

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

使用fast-json-stringify

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

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倍!

使用場景

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

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

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/99919.html

相關(guān)文章

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

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

    tomlingtm 評論0 收藏0
  • Fastfiy基礎指南

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

    svtter 評論0 收藏0
  • JS學習之JSON數(shù)據(jù)格式

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

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

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

    Baaaan 評論0 收藏0
  • 給初學者:JavaScript 中數(shù)組操作注意點

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

    tianyu 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<