js判断对象是否为空对象的几种方法

JavaScript029

js判断对象是否为空对象的几种方法,第1张

1.将json对象转化为json字符串,再判断该字符串是否为"{}"

var data={}

var b=(JSON.stringify(data) =='{}')

if(b==true){

    console.log('是的')

}else{

    console.log('不是')

}

2.for in 循环判断

var obj = {}

var b = function() {

for(var key in obj) {

return false

}

return true

}

alert(b())//true

4.Object.getOwnPropertyNames()方法

此方法是使用Object对象的getOwnPropertyNames方法,获取到对象中的属性名,存到一个数组中,返回数组对象,我们可以通过判断数组的length来判断此对象是否为空

注意:此方法不兼容ie8,其余浏览器没有测试

var data = {}

var arr = Object.getOwnPropertyNames(data)

alert(arr.length == 0)//true

5.使用ES6的Object.keys()方法

与4方法类似,是ES6的新方法, 返回值也是对象中属性名组成的数组

var data = {}

var arr = Object.keys(data)

alert(arr.length == 0)//true

6.Object.keys(res.data.list).map(id =>{

  let bankList = {

    code: id,

    text: res.data.list[id]

  }

  this.columns.push(bankList)

})

判断Map<String,Object>为空

Map<String, String>map = new HashMap<String, String>()

map.containsKey ("abc")

首先js暂时还没有map类型。所以需要先自己定义一个Map类型。代码如下

function Map () {

   /**

    * 结构

    * @param key

    * @param value

    */

   function Struct(key,value) {

       this.key = key

       this.value = value

   }

   /**

    * 数据存放数组

    */

   this.arr = []

   /**

    * 增加数据

    * @param key {String}

    * @param value {Object}

    */

   this.put = function (key,value) {

       for (var i = 0 i < this.arr.length i++) {

           if (this.arr[i].key === key) {

               this.arr[i].value = value

               return

           }

       }

       this.arr[this.arr.length] = new Struct(key,value)

   }

   /**

    * 通过key获取数据

    * @param key {String}

    * @returns {Object}

    */

   this.get = function (key) {

       for (var i = 0 i < this.arr.length i++) {

           if (this.arr[i].key === key) {

               return this.arr[i].value

           }

       }

       return null

   }

   /**

    * 删除数据

    * @param key{String}

    */

   this.remove = function (key) {

       var v

       for (var i = 0 i < this.arr.length i++) {

           v = this.arr[i]

           if (v.key === key) {

               this.arr.splice(i,1)

               return

           }

       }

   }

   /**

    * 是否存在key

    * @param key {String}

    * @returns {boolean}

    */

   this.containsKey = function (key) {

       var v

       for (var i = 0 i < this.arr.length i++) {

           v = this.arr[i]

           if (v.key === key) {

               return true

           }

       }

       return false

   }

   /**

    * 获取map数据量

    * @returns {Number}

    */

   this.size = function () {

       return this.arr.length

   }

   /**

    * 判断Map是否为空

    * @returns {boolean}

    */

   this.isEmpty = function () {

       return this.arr.length <= 0

   }

   /**

    * 全部清空

    */

   this.removeAll = function () {

       this.arr = []

   }

}

然后放入数据再做判断

var map = new Map()

map.put("str",'aaaaaa')

console.log(map.get('str'))

//判断是否为Map类型。 instanceof

console.log(map instanceof Map)