Javascript 和 jQuery : Updating array of objects

标签 javascript jquery

我在尝试找到一个好的逻辑来更新 Javascript 中的对象数组时遇到了一些困难。
我通过向服务器发出请求来获得第一个数组。我得到一组对象,如下所示:

{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);

关于Javascript 和 jQuery : Updating array of objects,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11474628/

相关文章:

javascript - 在对象上使用映射时意外使用逗号

javascript - Chrome : "Uncaught SyntaxError: Unexpected token : "

javascript - 如何覆盖 JavaScript 函数

javascript - jquery 回调和 json 数据

javascript - 当函数执行 Jquery 时做一些事情

javascript - 返回未定义的 jquery 节点名

javascript - Internet Explorer 8 解析 XML 不适用于巨大的响应大小

javascript - 如何通过 JavaScript 检查查询字符串值是否存在?

asp.net - 是否可以使用 Javascript 破坏由 ASP.NET (VB.NET) 设置的 session 变量?

jquery - 单击按钮时隐藏和显示 div