在JavaScript中定义队列数据结构

时间:2013-10-20 13:39:36

标签: javascript

我只是想学习JavaScript。我想设计一个采用以下格式的队列:

[{(0,0),0}], [{(0,1),1}], [{(0,2),2}]

所以我尝试用以下方式定义队列,但显然它不正确

var queue = [{}] ;

3 个答案:

答案 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()。