javascript - 是否可以将具有相同键的多个 javascript 对象添加到关联数组?

标签 javascript associative-array single-page-application

我正在开发一个后端带有 RESTful api 的 Javascript 网络应用程序 (SPA)。在我的客户端数据上下文中,我想将对象添加到我的模型图中,然后立即将整个图发送到服务器。

假设如下例子:

我的模型中有一个 Person 对象,它本身有一个 say PhoneNumbers 数组作为属性。现在我从 api 加载一个 Person 进行编辑并将其映射到我的模型。假设我想向我的 PhoneNumbers 添加一些电话号码对象。为此,我添加了每个数字,例如{"id": 0, "number": 6536652226} id 为零到我的客户端模型,并在用户单击保存时将整个图发送到服务器。在服务器中,我将 ID 为零的对象(新对象)添加到具有自动递增 ID 的数据库中。

我正在根据教程做我的项目。他们做这样的事情来将对象添加到上下文中:

                var items = {},
                    // returns the model item produced by merging json obj into context
                    mapJsonToContext = function (json) {
                        var id = mapper.getJsonId(json);
                        var existingItem = items[id];
                        items[id] = mapper.fromDto(json, existingItem); //returns the mapped obj
                        return items[id];
                    },
                    add = function (newObj) {
                    items[newObj.id()] = newObj;
                    }

问题是,如果我使用这种方法,我将无法通过 ID 删除客户端中新添加但尚未保存的项目,因为所有 ID 均为零!

有任何解决此问题的建议,还是我需要一种完全不同的方法?

最佳答案

首先,我发现了两个小误解:

1) 忘掉“关联数组”吧。数值数组是您拥有的唯一一种数组;其他构造只是“对象”(这不是 PHP)。

2) 如果是 JSON,则它是一个字符串,而不是一个对象。

除此之外,您当然可以使用任意值来表示"new"(尽管我可能会使用 null 而不是 0)不要使用此类值来唯一标识尚未添加的项目。例如,这很好:

[
    {"id": 0, "number": "6536652226"},
    {"id": 0, "number": "9876543210"},
    {"id": 0, "number": "0123456789"}
]

这不是:

// WRONG!!!!
{
    0: "6536652226",
    0: "9876543210",
    0: "0123456789"
}

当然,如果号码仍然没有 ID,您将无法通过 ID 找到号码。您需要选择:

  • 从数据库中检索生成的 ID 并更新您的本地数据
  • 按编号删除

关于javascript - 是否可以将具有相同键的多个 javascript 对象添加到关联数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15205166/

相关文章:

javascript - 在单页网站中排列不同 View 的最佳方式

javascript - 直接从网络应用程序安全访问亚马逊 s3?

single-page-application - 使用 Durandal 模态对话框显示小部件

javascript - 按钮单击事件触发错误的事件处理程序

javascript - 我的安全设计合理吗?

php - 在 php 中分配给关联数组切片

bash - 尝试增加关联数组元素时出现错误的数组下标错误

javascript - 如何在 PHP 中打印页面以使用与 window.print() 相同的打印机进行打印

javascript - Google Api - 单独对象 - JavaScript

java - 在Java中如何创建关联数组结构并排序,同时保留具有不同值对的重复键