* @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程序设计有所帮助。