您的位置 首页 php

PHP 和 JSON 都说 _.isEmpty() 是个好方法

fa4e6c36-580d-425e-b74c-d6969f82ff01

背景

我们在通过后端 API 获取 JSON 数据时,有时会遇到这个问题:

在需要输出为对象的地方,如果没有数据,以前端的习惯来说,我们会期待收到一个空对象 {};但实际上,此时我们往往会收到一个空数组 []。

前端在检查和处理此类数据时,会感到稍许不便。如果考虑不周,还会引发错误。

原因

在 PHP 中,与 JavaScript 数组和对象对应的概念都是数组;而且 PHP 实际上并不区分索引数组和关联数组,只是允许开发者通过数组键名的约定来产生这两种数组的效果。也就是说,对于空数组,由于它不包含键名,无法判断它是“索引数组”还是“关联数组”。因此,PHP 的 json_encode() 方法在处理空数组时,一律将其 编码 为 []。

由此可见,要求后端来改变这种情况恐怕不太容易,还是需要前端在处理类似数据的时候做个容错判断(我们常说“发送时要严格、接收时要宽松”嘛)。那么,怎样判断既简单又方便呢?

解决方案

这里就要隆重推出 _. isEmpty () 啦!请看以下代码:

_.isEmpty() //true_.isEmpty(null) //true_.isEmpty( undefined ) //true_.isEmpty('') //true_.isEmpty({}) //true_.isEmpty([]) //true_.isEmpty('foo') //false_.isEmpty([foo, bar]) //false_.isEmpty({foo: bar}) //false 

同时我们注意到,即使后端将空数据输出为 null,仅用这一个方法也可以一并判断。

注意事项

需要注意的是,不能把这货当成 toBoolean() 来用。这样用是有坑的:

_.isEmpty(1) //true_.isEmpty(0) //true_.isEmpty( NaN ) //true_.isEmpty(true) //true_.isEmpty(false) //true_.isEmpty(_.isEmpty) //true 

所以,只应该用它来判断一个数据集合是否为空。

希望本文能帮助到您!

点赞+转发,让更多的人也能看到这篇内容(收藏不点赞,都是耍流氓-_-)

关注 {我},享受文章首发体验!

每周重点攻克一个前端技术难点。更多精彩前端内容私信 我 回复“教程”

原文链接:

文章来源:智云一二三科技

文章标题:PHP 和 JSON 都说 _.isEmpty() 是个好方法

文章地址:https://www.zhihuclub.com/31435.shtml

关于作者: 智云科技

热门文章

网站地图