关于IE8 及以下版本不支持Map() 对象的解决办法

IE8 及以下版本不支持

var map = new Map();

只需要将以下代码拷入中即可。

function Map() {
this. elements = new Array();
// 获取Map元素个数
this. size = function() {
return this. elements. length;
},
// 判断Map是否为空
this. isEmpty = function() {
return ( this. elements. length < 1);
},
// 删除Map所有元素
this. clear = function() {
this. elements = new Array();
},
// 向Map中增加元素(key, value)
this. put = function( _key, _value) {
if ( this. containsKey( _key) == true) {
if ( this. containsValue( _value)) {
if ( this. remove( _key) == true) {
this. elements. push({
key : _key,
value : _value
});
}
} else {
this. elements. push({
key : _key,
value : _value
});
}
} else {
this. elements. push({
key : _key,
value : _value
});
}
},
// 向Map中增加元素(key, value)
this. set = function( _key, _value) {
if ( this. containsKey( _key) == true) {
if ( this. containsValue( _value)) {
if ( this. remove( _key) == true) {
this. elements. push({
key : _key,
value : _value
});
}
} else {
this. elements. push({
key : _key,
value : _value
});
}
} else {
this. elements. push({
key : _key,
value : _value
});
}
},
// 删除指定key的元素,成功返回true,失败返回false
this. remove = function( _key) {
var bln = false;
try {
for ( i = 0; i < this. elements. length; i++) {
if ( this. elements[ i]. key == _key) {
this. elements. splice( i, 1);
return true;
}
}
} catch ( e) {
bln = false;
}
return bln;
},
// 删除指定key的元素,成功返回true,失败返回false
this. delete = function( _key) {
var bln = false;
try {
for ( i = 0; i < this. elements. length; i++) {
if ( this. elements[ i]. key == _key) {
this. elements. splice( i, 1);
return true;
}
}
} catch ( e) {
bln = false;
}
return bln;
},
// 获取指定key的元素值value,失败返回null
this. get = function( _key) {
try {
for ( i = 0; i < this. elements. length; i++) {
if ( this. elements[ i]. key == _key) {
return this. elements[ i]. value;
}
}
} catch ( e) {
return null;
}
},
// set指定key的元素值value
this. setValue = function( _key, _value) {
var bln = false;
try {
for ( i = 0; i < this. elements. length; i++) {
if ( this. elements[ i]. key == _key) {
this. elements[ i]. value = _value;
return true;
}
}
} catch ( e) {
bln = false;
}
return bln;
},
// 获取指定索引的元素(使用element.key,element.value获取key和value),失败返回null
this. element = function( _index) {
if ( _index < 0 || _index >= this. elements. length) {
return null;
}
return this. elements[ _index];
},
// 判断Map中是否含有指定key的元素
this. containsKey = function( _key) {
var bln = false;
try {
for ( i = 0; i < this. elements. length; i++) {
if ( this. elements[ i]. key == _key) {
bln = true;
}
}
} catch ( e) {
bln = false;
}
return bln;
},
// 判断Map中是否含有指定key的元素
this. has = function( _key) {
var bln = false;
try {
for ( i = 0; i < this. elements. length; i++) {
if ( this. elements[ i]. key == _key) {
bln = true;
}
}
} catch ( e) {
bln = false;
}
return bln;
},
// 判断Map中是否含有指定value的元素
this. containsValue = function( _value) {
var bln = false;
try {
for ( i = 0; i < this. elements. length; i++) {
if ( this. elements[ i]. value == _value) {
bln = true;
}
}
} catch ( e) {
bln = false;
}
return bln;
},
// 获取Map中所有key的数组(array)
this. keys = function() {
var arr = new Array();
for ( i = 0; i < this. elements. length; i++) {
arr. push( this. elements[ i]. key);
}
return arr;
},
// 获取Map中所有value的数组(array)
this. values = function() {
var arr = new Array();
for ( i = 0; i < this. elements. length; i++) {
arr. push( this. elements[ i]. value);
}
return arr;
};
/**
* map遍历数组
* @param callback [function] 回调函数;
* @param context [object] 上下文;
*/
this. forEach = function forEach( callback, context){
context = context || window;
//IE6-8下自己编写回调函数执行的逻辑
var newAry = new Array();
for( var i = 0; i < this. elements. length; i++) {
if( typeof callback === 'function') {
var val = callback. call( context, this. elements[ i]. value, this. elements[ i]. key, this. elements);
newAry. push( this. elements[ i]. value);
}
}
return newAry;
}
}

你可能感兴趣的:(web)