前言:锻炼自己的思想,规范自己的编程思路。
问题:
给定一个对象或数组,判断它是否为空。
一个空对象不包含任何键值对。 一个空数组不包含任何元素。 你可以假设对象或数组是通过 JSON.parse 解析得到的。
示例:
输入:obj = {"x": 5, "y": 42}
输出:false
解释:The object has 2 key-value pairs so it is not empty.
思路:
这个函数接受一个对象或数组作为参数,函数会判断,
如果它是空的,就直接返回true,否则返回 false。它首先使用 Array.isArray() 方法检查输入是否是数组。
如果它是一个数组,当其长度为 0 时返回true。
如果输入不是数组,会使用typeof 运算符检查它是否为对象。
如果它是一个对象,当对象中的键数为 0 时,使用Object.keys() 方法返回 true。
如果输入既不是数组也不是对象,则函数返回false。
基于上述思考,代码如下:
/**
* @param {Object | Array} obj
* @return {boolean}
*/
var isEmpty = function(obj){
if (Array.isArray(obj)) {
return obj.length === 0;
} else if (typeof obj === 'object') {
return Object.keys(obj).length === 0;
}
return false;
}
执行结果如下图:
学到的知识点:
1.Object.keys() 是 JavaScript 中的一个方法,它返回一个给定对象自身可枚举属性的键名数组。这个数组中键名的排列顺序与使用for...in 循环遍历该对象时返回的顺序相同。
总结,Object.keys() 方法来获取一个对象中所有键的数组,并使用它来判断一个对象是否为空。
2.Array.isArray() 是一个 JavaScript 方法,用于确定传递的值是否为一个数组。如果传递的值是一个数组,它返回 true,否则返回 false。
总结:
通过这个题目,可以学习如何判断一个对象或数组是否为空。可以了解如何使用Array.isArray() 方法来检查一个变量是否为数组,以及如何使用typeof 运算符来检查一个变量的类型。此外,还可以学习如何使用 Object.keys() 方法来获取一个对象中所有键的数组,并使用它来判断一个对象是否为空。