js 中怎样生命一个Hasmap对象? js 中怎样生命一个Hasmap对象?怎样从hasmap中取得key所对应的值? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 mei ren lai a !!! JS中没有hasmap数据类型啊.楼主平时记得结帖啊. JS里面你可以认为所有对象都是Mapvar o = new Object();o["s"] = 123;alert(o["s"]);就可以了不过LZ你的结贴率有点低了。 构造一个呗function Hash(){ this.length = 0; this.items = new Array(); for (var i = 0; i < arguments.length; i += 2) { if (typeof(arguments[i + 1]) != 'undefined') { this.items[arguments[i]] = arguments[i + 1]; this.length++; } }} 好了,基本上这样就能用了:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"><html><head> <meta http-equiv="Content-Type" content="text/html; charset=gbk" /> <title>试试</title></head><style type="text/css">div#console { width: 600px; height: 400px; font: normal 12px/14px "courier new"; background-color: black; color: lime; padding: 5px; border: 1px sold black; overflow: auto;}</style><script type="text/javascript">Object.prototype.propertyCount = function() { if(Object.prototype.hasOwnProperty('__count__')) { return this.__count__; } var count = 0; for(var i in this) { if(this.hasOwnProperty(i)) { count++; } } return count;}window.$ = function(id) { if(typeof(id) == 'string') { return document.getElementById(id); } return id;}/** * Map 类,使用 JavaScript 属性的特性来构建 Map */var Map = function() { this.entry = []; this.entrySize = 0;}Map.prototype = { size : function() { return this.entry.propertyCount(); }, put : function(key, value) { this.entry[key] = value; return value; }, get : function(key) { if(this.containsKey(key)) { return this.entry[key]; } return window.undefined; }, clear : function() { for(var key in this.entry) { if(this.containsKey(key)) { delete this.entry[key]; } } }, remove : function(key) { var v = this.entry[key]; delete this.entry[key]; return v; }, containsKey : function(key) { for(var i in this.entry) { if(i == key && this.entry.hasOwnProperty(key)) { return true; } } return false; }, isEmpty : function() { return this.size() == 0; }, keyArray : function() { var keys = []; for(var key in this.entry) { if(this.containsKey(key)) { keys.push(key); } } return keys; }, valueArray : function() { var values = []; for(var key in this.entry) { if(this.containsKey(key)) { values.push(get(key)); } } return values; }, entryArray : function() { var entrys = []; for(var key in this.entry) { if(this.containsKey(key)) { entrys.push(new Map.Entry(key, this.get(key))); } } return entrys; }}Map.Entry = function(key, value) { this.key = key; this.value = value;}Map.Entry.prototype = { getKey : function() { return this.key; }, getValue : function() { return this.value; }}/** * 类似于 Java 中的 System.out 工具 */var System = { out : { println : function(str) { System.out.print(str); System.out.__printLine__(); }, print : function(str) { System.out.__cache__.push(str); }, /** * 将数据写入“控制台”,并清空缓冲 */ flush : function() { $(System.out.__console_container__).innerHTML += System.out.__cache__.join(''); System.out.__cache__ = []; }, __printLine__ : function() { System.out.__cache__.push('<br />'); }, /** * System.out.print 的数据缓存,应使用 System.out.flush() 刷新 */ __cache__ : [], /** * HTML 中用作控制台 DIV 的 id 值 */ __console_container__ : 'console' }}window.onload = function() { var map = new Map(); map.put('a', 'b'); map.put('b', 'c'); map.put('c', null); System.out.println('size: ' + map.size()); var entry = map.entryArray(); for(var i = 0; i < entry.length; i++) { System.out.println(entry[i].getKey() + ' --> ' + entry[i].getValue()); } System.out.println('a: ' + map.get('a')); System.out.println('c: ' + map.get('c')); System.out.println('ok: ' + map.get('ok')); System.out.flush();}</script><body> <div id="console"></div></body></html> 5楼的太NB啦!不知LZ为何要用HashMap,可以考虑下用json数据格式 javaeye的web前端技术有个系列文章叫JavaScript内核系列 讲的比较详细而且能引发一点兴趣 果子大神写的如果能满足LZ需要的话那就不用管这个 如果你想自己写一个的话可以看看这个 对了 提示下 JS的数组索引不一定非得是INT型的 也就是说光用数组就可以实现类似HASHMAP的效果 *** @created date 2008-07-01*///需要一个java数据结构中的map类型,扩展js实现map//=============================begin 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) * @param {Object} _key * @param {Object} _value */ this.put = function(_key, _value) {this.elements.push({key:_key, value:_value}); } /** * 删除指定KEY的元素,成功返回True,失败返回False * @param {Object} _key */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的元素值VALUE,失败返回NULL* @param {Object} _key*/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; }}/*** 获取指定索引的元素(使用element.key,element.value获取KEY和VALUE),失败返回NULL* @param {Object} _index*/this.element = function(_index) { if (_index < 0 || _index >= this.elements.length) { return null; } return this.elements[_index];}/*** 判断MAP中是否含有指定KEY的元素* @param {Object} _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中是否含有指定VALUE的元素* @param {Object} _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中所有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中所有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;}}//=====================end map 定义============================================ 关于IO中的read()方法 关于在Java中如何使用Template技术的问题. 高分跪求利用POI提取WORD文档内容的方法!!!! 请问下这两种写法,有什么区别?哪一个好一些。 救急啊?很简单!马上给分 Exception in thread "main"java.lang.NoClassDefFoundError:HelloDate(在线) 请教三个问题 如何设置JTable的列宽度 有谁帮我解答一下? java编写一个多线程同时运行的代码 java.lang.ThreadGroup 线程组里的异常 如何打印出堆栈? 关于类加载和类初始化的问题
var o = new Object();
o["s"] = 123;
alert(o["s"]);就可以了不过LZ你的结贴率有点低了。
{
this.length = 0;
this.items = new Array();
for (var i = 0; i < arguments.length; i += 2) {
if (typeof(arguments[i + 1]) != 'undefined') {
this.items[arguments[i]] = arguments[i + 1];
this.length++;
}
}
}
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gbk" />
<title>试试</title>
</head><style type="text/css">
div#console {
width: 600px;
height: 400px;
font: normal 12px/14px "courier new";
background-color: black;
color: lime;
padding: 5px;
border: 1px sold black;
overflow: auto;
}
</style><script type="text/javascript">
Object.prototype.propertyCount = function() {
if(Object.prototype.hasOwnProperty('__count__')) {
return this.__count__;
}
var count = 0;
for(var i in this) {
if(this.hasOwnProperty(i)) {
count++;
}
}
return count;
}window.$ = function(id) {
if(typeof(id) == 'string') {
return document.getElementById(id);
}
return id;
}/**
* Map 类,使用 JavaScript 属性的特性来构建 Map
*/
var Map = function() {
this.entry = [];
this.entrySize = 0;
}Map.prototype = { size : function() {
return this.entry.propertyCount();
}, put : function(key, value) {
this.entry[key] = value;
return value;
}, get : function(key) {
if(this.containsKey(key)) {
return this.entry[key];
}
return window.undefined;
}, clear : function() {
for(var key in this.entry) {
if(this.containsKey(key)) {
delete this.entry[key];
}
}
}, remove : function(key) {
var v = this.entry[key];
delete this.entry[key];
return v;
}, containsKey : function(key) {
for(var i in this.entry) {
if(i == key && this.entry.hasOwnProperty(key)) {
return true;
}
}
return false;
}, isEmpty : function() {
return this.size() == 0;
}, keyArray : function() {
var keys = [];
for(var key in this.entry) {
if(this.containsKey(key)) {
keys.push(key);
}
}
return keys;
}, valueArray : function() {
var values = [];
for(var key in this.entry) {
if(this.containsKey(key)) {
values.push(get(key));
}
}
return values;
}, entryArray : function() {
var entrys = [];
for(var key in this.entry) {
if(this.containsKey(key)) {
entrys.push(new Map.Entry(key, this.get(key)));
}
}
return entrys;
}
}Map.Entry = function(key, value) {
this.key = key;
this.value = value;
}Map.Entry.prototype = {
getKey : function() {
return this.key;
},
getValue : function() {
return this.value;
}
}
/**
* 类似于 Java 中的 System.out 工具
*/
var System = { out : { println : function(str) {
System.out.print(str);
System.out.__printLine__();
}, print : function(str) {
System.out.__cache__.push(str);
}, /**
* 将数据写入“控制台”,并清空缓冲
*/
flush : function() {
$(System.out.__console_container__).innerHTML += System.out.__cache__.join('');
System.out.__cache__ = [];
}, __printLine__ : function() {
System.out.__cache__.push('<br />');
}, /**
* System.out.print 的数据缓存,应使用 System.out.flush() 刷新
*/
__cache__ : [], /**
* HTML 中用作控制台 DIV 的 id 值
*/
__console_container__ : 'console'
}
}window.onload = function() {
var map = new Map();
map.put('a', 'b');
map.put('b', 'c');
map.put('c', null);
System.out.println('size: ' + map.size()); var entry = map.entryArray();
for(var i = 0; i < entry.length; i++) {
System.out.println(entry[i].getKey() + ' --> ' + entry[i].getValue());
} System.out.println('a: ' + map.get('a'));
System.out.println('c: ' + map.get('c'));
System.out.println('ok: ' + map.get('ok')); System.out.flush();
}
</script>
<body>
<div id="console"></div>
</body>
</html>
不知LZ为何要用HashMap,可以考虑下用json数据格式
* @created date 2008-07-01
*///需要一个java数据结构中的map类型,扩展js实现map
//=============================begin 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)
* @param {Object} _key
* @param {Object} _value
*/
this.put = function(_key, _value) {
this.elements.push({key:_key, value:_value});
} /**
* 删除指定KEY的元素,成功返回True,失败返回False
* @param {Object} _key
*/
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的元素值VALUE,失败返回NULL
* @param {Object} _key
*/
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;
}
}/**
* 获取指定索引的元素(使用element.key,element.value获取KEY和VALUE),失败返回NULL
* @param {Object} _index
*/
this.element = function(_index) {
if (_index < 0 || _index >= this.elements.length)
{
return null;
}
return this.elements[_index];
}/**
* 判断MAP中是否含有指定KEY的元素
* @param {Object} _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中是否含有指定VALUE的元素
* @param {Object} _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中所有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中所有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;
}
}//=====================end map 定义============================================