Javascript 如何在java脚本中实现字典?

Javascript 如何在java脚本中实现字典?,javascript,node.js,dictionary,data-structures,Javascript,Node.js,Dictionary,Data Structures,这是我的源代码,但我有问题。我无法实现字典数据结构的showAll()函数 你能帮我吗 函数字典(){ this.add=添加; this.datastore=新数组(); this.find=find; 这个。移除=移除; this.showAll=showAll; this.count=计数; this.clear=clear; } 函数添加(键、值){ this.datastore[key]=值; } 函数查找(键){ 返回此.datastore[key]; } 功能移除(键){ 删除此

这是我的源代码,但我有问题。我无法实现字典数据结构的
showAll()
函数

你能帮我吗

函数字典(){
this.add=添加;
this.datastore=新数组();
this.find=find;
这个。移除=移除;
this.showAll=showAll;
this.count=计数;
this.clear=clear;
}
函数添加(键、值){
this.datastore[key]=值;
}
函数查找(键){
返回此.datastore[key];
}
功能移除(键){
删除此.datastore[key];
}
函数showAll(){
Object.keys(this.datastore).forEach(函数(键,索引){
console.log(key+“->”+this.datastore[key]);
});
}
函数计数(){
返回Object.keys(this.datastore).length;
}
/*函数计数(){
//var n=0;
//Object.keys(this.datastore).forEach(函数(键,索引){
//对于每个(Object.keys(this.datastore)中的var键){
//++n;
//};
//返回n;
}*/
函数clear(){
Object.keys(this.datastore).forEach(函数(键,索引){
//对于每个(Object.keys(this.datastore)中的var键){
删除此.datastore[key];
});
}
var pbook=新字典();
pbook.add(“迈克尔”,“012345”);
pbook.add(“Sam”,“54654654”);
pbook.add(“Shen”,“5465464”);
log(“Sam的扩展名:+pbook.find(“Sam”));
pbook.remove(“Sam”);

pbook.showAll();
forEach回调中的此与调用前的
不同,因为执行上下文(已调用函数并创建新范围)已更改。请将其保存在变量中,并在回调中使用

function showAll() {
    var ds = this.datastore;
    Object.keys(this.datastore).forEach( function(key, index) {
       console.log(key + "->" + ds[key]);
    });
}
函数字典(){
this.add=添加;
this.datastore=新数组();
this.find=find;
这个。移除=移除;
this.showAll=showAll;
this.count=计数;
this.clear=clear;
}
函数添加(键、值){
this.datastore[key]=值;
}
函数查找(键){
返回此.datastore[key];
}
功能移除(键){
删除此.datastore[key];
}
函数showAll(){
var ds=this.datastore;
Object.keys(this.datastore).forEach(函数(键,索引){
console.log(key+“->”+ds[key]);
});
}
函数计数(){
返回Object.keys(this.datastore).length;
}
/*
函数计数(){
//var n=0;
//Object.keys(this.datastore).forEach(函数(键,索引){
//对于每个(Object.keys(this.datastore)中的var键){
//++n;
//};
//返回n;
}
*/
函数clear(){
Object.keys(this.datastore).forEach(函数(键,索引){
//对于每个(Object.keys(this.datastore)中的var键){
删除此.datastore[key];
});
}
var pbook=新字典();
pbook.add(“迈克尔”,“012345”);
pbook.add(“Sam”,“54654654”);
pbook.add(“Shen”,“5465464”);
log(“Sam的扩展名:+pbook.find(“Sam”));
pbook.remove(“Sam”);

pbook.showAll();
我只需要使用一个JavaScript对象来存储键/值对

你可以简单地:

  • 添加属性
  • 删除属性(删除)
  • 读取属性(查找)
  • 显示所有属性(用于对象中的每个键和hasOwnProperty以跳过原型链)
  • 计数
  • 清除(所有属性)

只是一个建议。我认为可能更有效。

Javascript有一个变量的函数范围,这意味着在forEach循环中没有定义数据存储。原型:这是可行的,或者,
forEach
方法采用可选的第二个参数来分配上下文:
。forEach(回调,thisArg)
@Adam,我不知道!谢谢你的提醒!我已经把它包括在答案中了!@Adam,非常感谢你。@James,如果你发现一个答案解决了你的问题,请单击答案旁边的复选标记将其标记为已接受。