js判断一个对象是否为空对象

最近遇到一个问题,用vue循环一个数组,展示一些海报图片。数组为空的话是不会遍历的,为了不让能够出现默认图片,这也就需要在数组中增加一个默认空对象arr[{}]。问题来了,提交的时候怎么判断这个对象是空的呢?

简单粗暴的判断

因为是展示海报图片,每个对象下都有url属性,所以最直接的判断当前object的url属性

if (arr[0].url) {
  ...
}

这个方法是无法判断arr为空的情况,如果arr[0]是个null,那么浏览器回抛出Cannot read property 'url' of undefined的错误

使用es5的getOwnPropertyNames属性

getOwnPropertyNames 方法可以获取所有的元素键。它的返回值是一个数组,当数组长度为零时,说明对象为空。

if (Object.getOwnPropertyNames(arr[0]))

这个方法和第一个方法相同,如果arr是个空数组,会抛出Cannot convert undefined or null to object

jQuery的实现方法

Js判断object/json 是否为空,可以使用jQuery的isEmptyObject()方法。
jquery的实现非常简单,就是for in循环对象,默认返回true,如果可以循环则return false
代码如下:

function isEmptyObject (obj) {
  for (let k in obj)
    return false
  return true
}

该方法可以兼容到所有异常情况,下面是例子:

console.log(isEmptyObject());           //true
console.log(isEmptyObject({}));         //true
console.log(isEmptyObject(null));       //true
console.log(isEmptyObject(111));         //true
console.log(isEmptyObject({a: 1}));      //false

过滤原型继承属性的方法

上面也是最简单的实现,其实我们实际生产中还面对很多问题,不如对象从别处继承的对象过滤。
代码如下:

function isOwnEmpty (obj) {
  for (let k in obj) {
    if(obj.hasOwnProperty(key)) return false
  }
  return true
};

原文:大专栏  js判断一个对象是否为空对象

原文地址:https://www.cnblogs.com/chinatrump/p/11601657.html

时间: 2024-10-23 14:16:15

js判断一个对象是否为空对象的相关文章

javascript判断一个对象是否是空对象,localStorage和sessionStorage区别

判断一个对象是否是空对象: var obj ={}; 1. if(JSON.stringify(newobj)=="{}"){ console.log('kongduixiang')  }else{ console.log('hehe')  } 2. if(Object.keys(newobj).length == 0){ console.log('kongduixiang'); } localStorage和sessionStorage区别: localStorage和session

JavaScript中判断一个对象是否为"空对象”

JavaScript中判断一个对象是否为"空对象" 这里指的"空对象"是类似于:{ } 和 new Object() 这样的. 具体的代码实现和原理如下: // 所谓"空对象",即不包括任何可枚举(自定义)的属性.简而言之,就是该对象没有属性可以通过for...in迭代. // for-in循环会同时枚举非继承属性和从原型对象继承的属性,如果有,则立即返回false,否则默认返回true. isEmptyObject: function (obj

js判断一个对象是否为空

判断一个对象是否为空的三种方法 1.通过JSON自带的.stringify方法来判断 2.最常见的思路,for...in...遍历属性,为真则为"非空数组":否则为"空数组" 3.ES6新增的方法Object.keys() 原文地址:https://www.cnblogs.com/zhtian/p/9347841.html

js如何判断一个对象{}是否为空对象,没有任何属性

前段时间用js写了一个类似"angularjs"用于数据绑定的东西,功能是比较简单了, 通常应该传进来的是一个ArrayList JSON对象数组, 但有时候通过AJAX方法调用返回的是一个JSON对象,而不是数组! 为了兼容这种情况使用了以下代码: if (typeof model.rows === "object" && !(model.rows instanceof Array)){ model.rows = [model.rows]; } 这

js/jquery判断一个对象是否为空

一.js判断一个对象是否为空对象 1)通过JSON自带的.stringify方法来判断 //JSON自带的stringify方法,将json转成json字符串 var c = {}; if(JSON.stringify(c) == "{}"){ console.log("是空对象"); } 2)for...in...遍历属性 //for in var a = {}; var b = {foo:'bar'}; function aa(a){ for(var attr

判断一个对象是否为jquery对象的方法

当我们在用jquery的each做循环遍历的时候常常会使用到this,而有时候我们不知道this所指的到底是什么,因为要使用jquery的方法前提此对象必须是jquery对象.另外要判断一个javascript的对象是什么类型,可以使用typeof,但是typeof只能判断出js的基础对象(string,boolean,number,object).判断一个对象是否为jquery对象可以用 obj instanceof jQuery var obj = $("div"); if (ob

如何用js判断一个对象是不是Array

.如何用js判断一个对象是不是Array 1.Array.isArray(obj) 调用数组的isArray方法 2.obj instanceof Array 判断对象是否是Array的实例 3.Object.prototype.toString.call(obj) ==='[object Array]' Object.prototype.toString方法会取得对象的一个内部属性[[Class]],然后依据这个属性,返回一个类似于[object Array]的字符串作为结果,call用来改变

js判断字段是否为空 isNull

//在js中if条件为null/undefined/0/NaN/""表达式时,统统被解释为false,此外均为true . //为空判断函数 function isNull(arg1) {  return !arg1 && arg1!==0 && typeof arg1!=="boolean"?true:false; } //alert(isNull(null));    //true //alert(isNull(''));    

2-12python使用any判断一个对象是否为空的方法

这篇文章主要介绍了python使用any判断一个对象是否为空的方法,并给出了改进的方法供大家对比参考,具有一定的借鉴价值,需要的朋友可以参考下 本文实例讲述了python使用any判断一个对象是否为空的方法.分享给大家供大家参考. 具体实现代码如下: >>> eth = {"eth0″:"192.168.1.1″} >>> any(eth) True >>> eth = {} >>> any(eth) False