map中键为对象,用js将map中的键取出时,如何取出对象,以及它的属性

JavaScript08

map中键为对象,用js将map中的键取出时,如何取出对象,以及它的属性,第1张

重写对象的toString方法,按照json数据的规则

然后前台string转json

控制台打印

这个方法不需要引入其他包

如果map的key属性过多,或者key是集合,可以在后台先转json,然后前台一样String转json,再遍历

需要引入包

前台

首先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)

var map = new HashMap()

map.put("a","1")

map.put("b","2")

遍历:

var key = map.keySet()

for (var i in key){

alert(map.get(key[i]))

注:js 中使用map,要先导入一个HashMap.js文件

没要求,引入这个文件之后,可以直接使用hashmap了