Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在javascript上模拟先进先出_Javascript_Jquery_Sorting_Fifo - Fatal编程技术网

在javascript上模拟先进先出

在javascript上模拟先进先出,javascript,jquery,sorting,fifo,Javascript,Jquery,Sorting,Fifo,我用javascript模拟了一个先进先出的作业调度,我起初认为它很完美,但意识到它在某些条件下无法工作 Array.prototype.fifo = function(frames) { var results = [], result = []; for (var i = 0; i < this.length; i++) { result = result.slice(0); var inObjects = result.inObjects('page', th

我用javascript模拟了一个先进先出的作业调度,我起初认为它很完美,但意识到它在某些条件下无法工作

Array.prototype.fifo = function(frames) {
  var results = [], result = [];
  for (var i = 0; i < this.length; i++) {
    result = result.slice(0);
    var inObjects = result.inObjects('page', this[i]);
    if(result.length == frames && !inObjects) {
      result[i%frames] = page: this[i];
    } else if (!inObjects) {
      result.push(page: this[i]);
    }
    results.push(result);
  };
  return {result: results};
};
虽然这是正确的,但如果数字
i
等于
,排序将失败,并且当
模化时,剩余部分将为零,因此不起作用

// e.g.
// [1,1,1,2,3,4,5,6].fifo(3)
// returns
// [1], [1], [1], [1,2], [1,2,3], [1,2,4], [5,2,4], [5,6,4]
我的最佳选择是将
age
属性保存到每个页面,并将其作为对象推送,以跟踪谁将被替换。你怎么认为?有没有更简单的方法可以做到这一点

编辑 对于该
Array.prototype.inObject
,我正在检查对象数组中是否存在当前值

Array.prototype.inObjects = function(key, value) {
  for (var i = 0; i < this.length; i++) {
    if(this[i].hasOwnProperty(key) && this[i][key] == value){
      return true;
    }
  };
  return false;
};
Array.prototype.inObjects=函数(键,值){
for(var i=0;i
什么是
Array.prototype.inObjects
?已编辑。谢谢你的提问,我很困惑。javascript数组是否已经能够使用
push
shift
模拟FIFO?shift和pop仅删除第一个元素或最后一个元素…仅将内容作为最后一个元素推送,而不是推送到最早的元素所在的位置。
Array.prototype.inObjects = function(key, value) {
  for (var i = 0; i < this.length; i++) {
    if(this[i].hasOwnProperty(key) && this[i][key] == value){
      return true;
    }
  };
  return false;
};