Javascript 数据结构关联列表-如何创建头键值对?

Javascript 数据结构关联列表-如何创建头键值对?,javascript,data-structures,singly-linked-list,Javascript,Data Structures,Singly Linked List,我有一个关于数据结构关联列表/仅添加到头部的单链接列表的问题。 set函数应该设置(多个)键值对,get函数应该获得这些键值对-我不知道如何生成head(最初假设为null) 作为一个对象,由于新创建的节点变成了“新”头-我不明白如何才能“移动”带有键值对的“旧”头。。 很高兴有人帮忙!谢谢大家! 这是我的代码(不多,但根本不知道如何从这里开始) 在key-value对象中,您应该始终有一个键,因此请使用KISS原则: var object = {}; object['aKey'] = 'so

我有一个关于数据结构关联列表/仅添加到头部的单链接列表的问题。 set函数应该设置(多个)键值对,get函数应该获得这些键值对-我不知道如何生成head(最初假设为null) 作为一个对象,由于新创建的节点变成了“新”头-我不明白如何才能“移动”带有键值对的“旧”头。。 很高兴有人帮忙!谢谢大家!

这是我的代码(不多,但根本不知道如何从这里开始)


在key-value对象中,您应该始终有一个键,因此请使用KISS原则:

var object = {};

object['aKey'] = 'some value';
object['otherKey] = 'other value';
如果要存储对象,请使用数组:

var myArray = [];

myArrray.push({'key': 'value'});
myArrray.push({'key': 'value'});
myArrray.push({'key1': 'value1'});
如果希望一个键有很多值:

var object = {};

if(!object.hasOwnProperty('aKey')){
  object['aKey'] = [];
}

object['aKey'].push('value');

Javascript很简单,所以请保持简单:)

您就快到了。您在调用new ListN时错过了上一个节点

var newNode = new ListN(key, value, this.head);
//                                  ^^^^^^^^^
函数列表(){
this.head=null;
}
List.prototype.set=函数(键、值){
函数列表n(键、值、下一个){
this.key=key;
这个值=值;
this.next=next;
}
var node=this.head;
while(节点){
如果(node.key==key){
node.value=值;
返回;
}
node=node.next;
}
this.head=新列表n(键、值、this.head);
};
List.prototype.get=函数(键){
var node=this.head;
while(节点){
如果(node.key==key){
返回node.value;
}
node=node.next;
}
};
var smallList=新列表();
smallList.set('one','abc');
console.log(smallList);
smallList.set('two','def');
console.log(smallList);
console.log(smallList.get('one');
log(smallList.get('two');
log(smallList.get('three');
smallList.set('two','xyz');

console.log(smallList)这是一个关于数据结构关联列表的练习,所以我不能像其他方式那样只使用js。谢谢Nina!现在设置多个键值对是可行的,但无法获得它们。另外,设置/获取一个(而不是多个)键值对也不起作用-不知道为什么,但我没有定义。非常感谢,现在一切都起作用了。因此,这里发生的事情(我正在学习数据结构,所以只是试图理解它)是,首先使用new关键字“创建”头部,然后我们询问头部是否为null或是否已创建(=具有值),如果是,我们询问它是否为同一个键,如果是,我们返回,然后通过将其设置为next来移动头部-这是否正确?此外,我们需要返回头部,否则,如果我们确实将头部设置为下一个,而不删除“上一个”,它会有点丢失?对。但有一个问题存在,即您只获得具有相同密钥的第一个值。对于更新或创建,您必须首先搜索它,以防止重复。
var newNode = new ListN(key, value, this.head);
//                                  ^^^^^^^^^