javascript模拟map输出与去除重复项的方法

JavaScript018

javascript模拟map输出与去除重复项的方法,第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程序设计有所帮助。

(1)你调用的天地图的服务,logo是清除不掉的(2)矩形框总是距离鼠标点击的位置很远的原因 可能是天地图的坐标系和ArcGIS javascript API中的Map设置的坐标系不一致