4 回答
TA贡献1831条经验 获得超10个赞
您可能会考虑避免 API 响应中的错误值
"formatting": {
"isUnderlined": true,
"isItalic": false
}
"formatting": {
"isUnderlined": true
}
两种情况下的条件搜索返回相同的结果
如果您最终将响应转换为数组, formatting.indexOf('isUnderlined')并且formatting.includes('isUnderlined')如果存在于数组中则返回 true
TA贡献1878条经验 获得超4个赞
与数据发送/解析的任何问题一样,这里有很多事情需要考虑。
我倾向于不进行您在这里考虑的那种优化,除非您正在处理大量数据 [同时处理数百万/数十亿行]。
您也不需要!== -1
在.indexOf()
. 只需检查真实性即可。另一位用户还提到 JS 数组有.includes()
. 话虽这么说,这将对列表进行顺序扫描,并且字典查找速度更快。这肯定会减慢处理数据的速度,而不是加快发送数据的速度。
TA贡献1818条经验 获得超8个赞
您可以使用Array#includes
which 返回布尔结果。
formatting.includes('isBold')
一种更短的方法是只存储true
值。这允许直接使用该属性而无需迭代数组。
formatting: { isBold: true }
访问与具有 的属性相同false
,但访问返回true
或undefined
。在后一种情况下,您可以根据需要转换为布尔值。
否则,通过在语句或其他依赖检查中使用truthy / falsy值,利用 Javascript 自动强制转换为布尔值的优势if
,例如条件(三元)运算符?:
TA贡献1795条经验 获得超7个赞
前言:在大多数情况下,JSON 大小与成本无关。如果您希望减少延迟,请查看 websockets。
答案:为了减小尺寸,您可以使用一些假设:如果未找到该值,则假设它是假的。
发送一个 JSON
{
formatting: ['isBold', 'isItalic']
}
相当于
{
formatting: {
isBold: true,
isItalic: true,
isUnderlined: false,
isFirstWordOfSentence: false
}
}
然后,您可以使用检查值Array.prototype.includes
const isBoldTrue = data.formatting.includes('isBold')
添加回答
举报