4 回答

TA貢獻1831條經驗 獲得超10個贊
您可能會考慮避免 API 響應中的錯誤值
"formatting": {
"isUnderlined": true,
"isItalic": false
}
"formatting": {
"isUnderlined": true
}
兩種情況下的條件搜索返回相同的結果
如果您最終將響應轉換為數組, formatting.indexOf('isUnderlined')并且formatting.includes('isUnderlined')如果存在于數組中則返回 true

TA貢獻1878條經驗 獲得超4個贊
與數據發(fā)送/解析的任何問題一樣,這里有很多事情需要考慮。
我傾向于不進行您在這里考慮的那種優(yōu)化,除非您正在處理大量數據 [同時處理數百萬/數十億行]。
您也不需要!== -1
在.indexOf()
. 只需檢查真實性即可。另一位用戶還提到 JS 數組有.includes()
. 話雖這么說,這將對列表進行順序掃描,并且字典查找速度更快。這肯定會減慢處理數據的速度,而不是加快發(fā)送數據的速度。

TA貢獻1818條經驗 獲得超8個贊
您可以使用Array#includes
which 返回布爾結果。
formatting.includes('isBold')
一種更短的方法是只存儲true
值。這允許直接使用該屬性而無需迭代數組。
formatting:?{ ????isBold:?true ????}
訪問與具有 的屬性相同false
,但訪問返回true
或undefined
。在后一種情況下,您可以根據需要轉換為布爾值。
否則,通過在語句或其他依賴檢查中使用truthy?/?falsy值,利用 Javascript 自動強制轉換為布爾值的優(yōu)勢if
,例如條件(三元)運算符?:

TA貢獻1795條經驗 獲得超7個贊
前言:在大多數情況下,JSON 大小與成本無關。如果您希望減少延遲,請查看 websockets。
答案:為了減小尺寸,您可以使用一些假設:如果未找到該值,則假設它是假的。
發(fā)送一個 JSON
{
formatting: ['isBold', 'isItalic']
}
相當于
{
formatting: {
isBold: true,
isItalic: true,
isUnderlined: false,
isFirstWordOfSentence: false
}
}
然后,您可以使用檢查值Array.prototype.includes
const isBoldTrue = data.formatting.includes('isBold')
添加回答
舉報