存储“最近10年”的数据结构数据集

Data-structure to store "last 10" data sets?

本文关键字:数据结构 数据集 10年 最近 存储      更新时间:2023-09-26

我目前正在使用对象Literal来存储要发送给客户端的临时信息,它就像过去10组数据的历史容器。

所以我的问题是,找出最有效的方法来拼接对象并在开始时推入一个对象,所以基本上我有一个对象,这个对象里面有0个数据

然后插入值,但我需要做的是当对象达到10个键时,我需要弹出对象文本末尾的最后一个元素,将所有键向上推,然后在开始处插入一个值。

为例
var initializeData = {
    a : {},
    b : {},
    c : {},
    d : {},
    e : {},
    f : {},
    g : {},
    h : {},
    i : {},
    j : {}
}

插入元素时,需要将j移除, I 成为最后一个元素,a变为b

使新元素变为a

谁能帮我解决这个问题,我正在使用node.js,但原生JavaScript显然很好。


在回复建议后处理数组,这基本上是我认为你告诉我的是最好的解决方案:

function HangoutStack(n)
{
    this._array = new Array(n);
    this.max    = n;
}
HangoutStack.prototype.push = function(hangout)
{
    if(this._array.unshift(hangout) > this.max)
    {
        this._array.pop();
    }
}
HangoutStack.prototype.getAllItems = function()
{
    return this._array;
}

听起来使用数组会容易得多。然后,您可以使用unshift从开始插入,pop从结束删除。

编辑:

例子:

var items = []
function addItem(item) {
  items.unshift(item)
  if (items.length > 10) {
    items.pop()
  }
}

或者,您可以使用push/shift而不是unshift/pop。这取决于您希望新项位于数组的哪一端。

你需要的是一个循环缓冲区。看看这个在javascript中的实现

是的,使用数组。

var arr = [];
// adding an item
if (arr.unshift(item) > 10) {
    arr.pop();
}

如果您需要项目的"名称",如对象示例中的"a"或"b",只需将每个项目包装在包含名称和对象的另一个对象中。

js中的

对象就像字典——它们的项没有固有的顺序。它只是一些东西的集合。您可以尝试建立一个顺序(就像您的例子中从a到z),但是当事情发生变化时,您必须自己管理这个顺序。使用数组要简单得多。