我只是想学习JavaScript。我想设计一个采用以下格式的队列:
[{(0,0),0}], [{(0,1),1}], [{(0,2),2}]
所以我尝试用以下方式定义队列,但显然它不正确
var queue = [{}] ;
答案 0 :(得分:5)
首先,JS中没有“情侣”数据结构,因此您的(0,1)
必须是数组[0,1]
,对象:{x: 0, y: 1}
或自定义类型(见下文)
在javascript中,结构不是强类型的,因此您只需定义根是数组还是对象。在这种情况下,它似乎是一个数组。
var queue = [];
然后,按需要输入队列。例如:(我发明了字段名称,适合您的用例)
var element1 = {coords: [0, 0], val: 0 };
queue.push(element1);
var element2 = {coords: [0, 1], val: 1 };
queue.push(element2);
就像我说的,您可以使用另一种表示形式,例如:[[0,0], 0]
,或定义自定义类型(面向对象)。
function MyType(coords, val) {
this.coords = coords;
this.val = val;
}
function Couple(x, y) {
this.x = x;
this.y = y;
}
queue.push(new MyType(new Couple(1, 2), 3))
答案 1 :(得分:2)
对于队列,您希望使用array
来保存值
var myQueue = [] //Empty array
通过将某些内容推送到数组
来向队列添加内容myQueue.push(new Person(...))
通过将其移出数组
从队列中获取内容var nextInLine = myQueue.shift()
答案 2 :(得分:0)
您可以按如下方式构建队列:
function Queue () {
this.dataStore = [];
this.enqueue = enqueue;
this.dequeue = dequeue;
this.front = front;
this.back = back;
this.toString = toString;
this.empty = empty;
}
// Insetion
function enqueue(element){
this.dataStore.push(element);
}
// Deletion
function dequeue(){
this.dataStore.shift();
}
// front
function front(){
return this.dataStore[0];
}
//back
function back(){
return this.dataStore[this.dataStore.length-1];
}
//toString
function toString(){
var retStr = '';
for(var i = 0; i < this.dataStore.length; i++){
retStr = retStr + this.dataStore[i]
}
return retStr;
}
//empty
function empty(){
if(this.dataStore.length === 0) {
return true;
}
return false;
}
现在将它用作构造函数方法,var q = new Queue()。