Javascript&;jQuery:更新对象数组
我在试图找到一个好的逻辑来更新Javascript中的对象数组时遇到了一些困难。Javascript&;jQuery:更新对象数组,javascript,jquery,Javascript,Jquery,我在试图找到一个好的逻辑来更新Javascript中的对象数组时遇到了一些困难。 我通过向服务器发出请求来获取第一个数组。我得到一个对象数组,如下所示: {id: 2, text: 'some text'} //Object 这就是阵列的外观: [Object, Object, Object] 这些对象将转换为html。 一段时间后,它执行第二个请求并获得一个新的数据对象列表。如何将旧列表与新列表同步?我所说的同步是指:删除不再存在的对象,以及相关的html部分,并插入当前不在正确
我通过向服务器发出请求来获取第一个数组。我得到一个对象数组,如下所示:
{id: 2, text: 'some text'} //Object
这就是阵列的外观:
[Object, Object, Object]
这些对象将转换为html。一段时间后,它执行第二个请求并获得一个新的数据对象列表。如何将旧列表与新列表同步?我所说的同步是指:删除不再存在的对象,以及相关的html部分,并插入当前不在正确位置的节点 您可以找到添加和删除的项目,如下所示:
var origArray = [...]; // assume first set of data is in origArray
var newArray = [...]; // second set of data is in newArray
function makeMap(array, key) {
var map = {};
for (var i = 0; i < array.length; i++) {
map[array[i][key]] = true;
}
return(map);
}
function compareArrayToMap(array, map) {
var item, var results = [];
for (var i = 0; i < array.length; i++) {
item = array[i];
if (!(item.id in map)) {
results.push(item);
}
}
return(results);
}
// build id map for each array
var origMap = makeMap(origArray, "id");
var newMap = makeMap(newArray, "id");
// find items that have been removed
var removedItems = compareArrayToMap(origArray, newMap);
// find items that have been added
var addedItems = compareArrayToMap(newArray, origMap);
var origaray=[…];//假设第一组数据在origArray中
var newArray=[…];//第二组数据位于newArray中
函数makeMap(数组、键){
var-map={};
对于(var i=0;i
每个对象的id
是唯一的吗?HTML是什么样子的?{text}。无论如何,这与此问题无关。我知道如何同步html,我不知道如何同步数组。花括号被通过ajax请求的内容所取代。啊,好吧,听起来你也在问HTML方面的问题