js 有没有可以实现java 中map 对象的方法

JavaScript014

js 有没有可以实现java 中map 对象的方法,第1张

/**

* @version 1.0

* 用于实现页面 Map 对象,Key只能是String,对象随意

*/

var Map = function(){

this._entrys = new Array()

this.put = function(key, value){

if (key == null || key == undefined) {

return

}

var index = this._getIndex(key)

if (index == -1) {

var entry = new Object()

entry.key = key

entry.value = value

this._entrys[this._entrys.length] = entry

}else{

this._entrys[index].value = value

}

}

this.get = function(key){

var index = this._getIndex(key)

return (index != -1) ? this._entrys[index].value : null

}

this.remove = function(key){

var index = this._getIndex(key)

if (index != -1) {

this._entrys.splice(index, 1)

}

}

this.clear = function(){

this._entrys.length = 0

}

this.contains = function(key){

var index = this._getIndex(key)

return (index != -1) ? true : false

}

this.getCount = function(){

return this._entrys.length

}

this.getEntrys = function(){

return this._entrys

}

this._getIndex = function(key){

if (key == null || key == undefined) {

return -1

}

var _length = this._entrys.length

for (var i = 0i <_lengthi++) {

var entry = this._entrys[i]

if (entry == null || entry == undefined) {

continue

}

if (entry.key === key) {//equal

return i

}

}

return -1

}

}

本文实例讲述了javascript模拟map输出与去除重复项的方法。分享给大家供大家参考。具体方法如下:

1.Javascriptmap输出

function

Map(){

//

private

var

obj

=

{}

//

空的对象容器,承装键值对

//

put

方法

this.put

=

function(key

,

value){

obj[key]

=

value

//

把键值对绑定到obj对象上

}

//

size

方法

获得map容器的个数

this.size

=

function(){

var

count

=

0

for(var

attr

in

obj){

count++

}

return

count

}

//

get

方法

根据key

取得value

this.get

=

function(key){

if(obj[key]

||

obj[key]

===

0

||

obj[key]

===

false){

return

obj[key]

}

else

{

return

null

}

}

//remove

删除方法

this.remove

=

function(key){

if(obj[key]

||

obj[key]

===

0

||

obj[key]

===

false){

delete

obj[key]

}

}

//

eachMap

变量map容器的方法

this.eachMap

=

function(fn){

for(var

attr

in

obj){

fn(attr,

obj[attr])

}

}

}

//模拟java里的Map

var

m

=

new

Map()

m.put('01'

,

'abc')

m.put('02'

,

false)

m.put('03'

,

true)

m.put('04'

,

new

Date())

//alert(m.size())

//alert(m.get('02'))

//m.remove('03')

//alert(m.get('03'))

m.eachMap(function(key

,

value){

alert(key

+"

:"+

value)

})

2.去除map中重复项

var

arr

=

[2,1,2,10,2,3,5,5,1,10,13]//object

//js对象的特性:在js对象中key是永远不会重复的

/*

var

obj

=

new

Object()

obj.name

=

'z3'

obj.age

=

20

//alert(obj.name)

obj.name

=

'w5'

alert(obj.name)

*/

//

1

把数组转成一个js的对象

//

2

把数组中的值,变成js对象当中的key

//

3

把这个对象

再还原成数组

//

把数组转成对象

function

toObject(arr){

var

obj

=

{}

//

私有的对象

var

j

for(var

i=0

,

j=

arr.length

i<j

i++){

obj[arr[i]]

=

true

}

return

obj

}

//

把这个对象转成数组

function

keys(obj){

var

arr

=

[]

//

私有对象

for(var

attr

in

obj){

if(obj.hasOwnProperty(attr)){//YUI底层代码

arr.push(attr)

}

}

return

arr

}

//综合的方法

去掉数组中的重复项

function

uniq(newarr){

return

keys(toObject(newarr))

}

alert(uniq(arr))

希望本文所述对大家的javascript程序设计有所帮助。