存储“最近10年”的数据结构数据集
Data-structure to store "last 10" data sets?
我目前正在使用对象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),但是当事情发生变化时,您必须自己管理这个顺序。使用数组要简单得多。
相关文章:
- JS库支持各种数据结构?(如爪哇的番石榴)
- JavaScript数据结构
- Node JS,传统的数据结构?(如Set等),任何类似Java.util的node
- 更正扁平数据模型和noSQL数据结构
- Firebase-结构数据
- 用于筛选无模式集合的最快数据结构
- 将数据结构转换为二进制数据
- JavaScript 设置具有对数搜索时间的数据结构
- 更好的数据结构来处理这个数组
- Firebase 数据结构理念
- 基于其他数据结构更新 AngularJS 中的数据结构
- JavaScript - JSON 数据结构的构建 - 如何使用变量值更改键名
- 如何处理在javascript中访问数据结构的两个回调
- 文字与原型对象表示法的数据结构
- 表示可用产品的所有组合的数据结构
- Immutable.js:表示2D游戏场的数据结构
- javascript和python返回的相同数据结构在d3.js中表现不同
- 无法识别的数据结构-转换为对象
- redux 和不可变数据结构如何处理大型数据集
- 存储“最近10年”的数据结构数据集