当前位置: 首页 > 面试题库 >

对象数组与对象对象

章振
2023-03-14
问题内容

问题在于确定以下符号之间的权衡:

基于JSON

"users": {
    "id1": {
        "id": "id1",
        "firstname": "firstname1",
        "lastname": "lastname1"
    },
    "id2": {
        "id": "id2",
        "firstaame": "firstname2",
        "lastname": "lastname2"
    }
}

基于数组

users: [
    {
        "id": "id",
        "key2": "value2",
        "key3": "value3"
    },
    {
        "id": "id",
        "key2": "value2",
        "key3": "value3"
    }
]

关于同一问题的这篇文章,我已经决定(在前端)使用JSON对象表示法而不是对象数组,因为它符合我的要求,更好的性能和更少的浏览器代码。

但是问题在于列表本身不是静态的。我的意思是,该列表正在生成,即从DB(NoSQL)获取/存储,并通过服务器上的JavaAPI为新条目创建。我无法决定在后端应使用哪种表示法(最终也会影响UI)。

关于性能,可维护性或可伸缩性的任何想法/建议均应受到赞赏。


问题答案:

这是一个完全基于意见的问题。可能还有许多其他要点,但我可以指出如下。

基于JSON的方法: 如果我没有记错,那么这将Map在服务器端使用来实现。

优点: 在JavaScript中,您可以直接使用users.id1,users.id2,即无需迭代

缺点: 在客户端,您将需要一些如何使用JSON中存在的ID的方法,即硬编码它或使用某种动态方法来告诉您JSON中存在哪些ID。

基于数组的方法: 如果我没有记错的话,这将在服务器端使用Array/ 来实现List

优点:

  1. 在客户端,您可以直接遍历数组,而无需事先担心其中存在哪个ID,即无需进行硬编码。
  2. 正如 @JBNizet 指出的 那样 ,基于数组的方法将保持顺序。

缺点: 如果要获取单个id,则需要遍历数组。

通常,我们不会在客户端发送太多信息,因此基于数组的方法不会造成任何问题。和 转化数组地图有可能在两侧(服务器和客户端) ,如果你想基于ID的方法。



 类似资料:
  • 问题 你想要得到一个与你的某些属性匹配的数组对象。 你有一系列的对象,如: cats = [ { name: "Bubbles" favoriteFood: "mice" age: 1 }, { name: "Sparkle" favoriteFood: "tuna" }, { name: "flyingCat" favo

  • 问题内容: 在一个我目前正在从事的项目中,我遇到了一个角度异常: 在寻找解决方案的搜索中,我直接在浏览器中输入了Web服务的URL,但令人惊讶的是,我没有收到预期的数组。 Web服务类: 当我输入网址时,我希望看到带有JSON对象的JSON数组: 但是,相反,我收到的JSON对象的属性与我期望的JSON对象相同,没有任何数组: 所以我想知道为什么没有数组,当我添加另一个Clazz对象时会发生什么。

  • 本文向大家介绍JavaScript中的Array 对象(数组对象),包括了JavaScript中的Array 对象(数组对象)的使用技巧和注意事项,需要的朋友参考一下  1、创建Array对象方法: --->var arr = [1,2,3];//简单的定义方法 此时可以知道 此时可以知道: 2、Array对象属性 Array常见的属性有三个:constructor、length和prototyp

  • 问题内容: 假设您有一个非常简单的数据结构: …并且您想将其中一些存储在javascript变量中。如我所见,您有三个选择: 如果您要存储(或希望可能拥有)多个“价值”部分(例如,增加他们的年龄等),显然第二或第三种选择是可行的,因此,为了论证,让我们假设在此结构中再也不需要任何数据值了。您选择哪一个,为什么? 编辑 :该示例现在显示最常见的情况:非顺序ID。 问题答案: 每个解决方案都有其用例。

  • 问题内容: 在我目前正在从事的一个项目中,我遇到了一个角度异常: 在寻找解决方案的搜索中,我直接在浏览器中输入了Web服务的URL,但令人惊讶的是,我没有收到预期的数组。 Web服务类: 当我输入网址时,我希望看到带有JSON对象的JSON数组: 但是,相反,我收到的JSON对象的属性与我期望的JSON对象相同,没有任何数组: 所以我想知道为什么没有数组,当我添加另一个Clazz对象时会发生什么。