gpt4 book ai didi

javascript - 比较 Javascript 中的可变大小对象

转载 作者:行者123 更新时间:2023-11-30 18:48:31 25 4
gpt4 key购买 nike

我正在使用 AJAX 开发一个自动更新的信息表,但我遇到了一个障碍。我使用 PHP 在每个请求上返回一个 JSON 对象,其中包含以下格式的数据:

({
"table": {
"544532": {
"field1": "data",
"field2": "data2",
"field3": "data3",
.....
},
"544525": {
"field1": "data",
"field2": "data2",
"field3": "data3",
.....
},
......
}
}); //

我使用 Prototype.js 将 ID 列表放入数组中:

var ids = Object.keys(data.table).sort();

但是,表格的随机行可能随时从列表中消失,并且新行可能随时添加到末尾。我假设我会存储上一个请求中的 ID 数组并将它们与新数组进行比较,但是由于随机行可能会消失,因此在该行之后移动 ID,我如何比较这些以便我只能添加新行或从页面中删除已删除的行?

最佳答案

不幸的是,Prototype 不包含 Set 类型,这会使事情变得更加简单。所以我们必须凑合着用这个:

Array.prototype.subtract = function(a){
return this.reject(this.include.bind(a));
}

上面添加了一个非常需要的 subtract 函数。我们可以这样使用它:

added_ids = new_ids.subtract(old_ids);
removed_ids = old_ids.subtract(new_ids);

它也不会太慢,因为一些浏览器支持 Prototype 的 include 检查和使用的 indexOf

附言。 Array 已经有一个intersect 函数,如果你还想要一个complement,它是...

Array.prototype.complement = function(a){
return a.reject(this.include.bind(this));
}

本质上 a.subtract(b)b.complement(a) 相同。

关于javascript - 比较 Javascript 中的可变大小对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4671794/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com