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

Javascript中对象与数组的键/值对

南宫兴德
2023-03-14
问题内容

假设您有一个非常简单的数据结构:

(personId, name)

…并且您想将其中一些存储在javascript变量中。如我所见,您有三个选择:

// a single object
var people = {
    1 : 'Joe',
    3 : 'Sam',
    8 : 'Eve'
};

// or, an array of objects
var people = [
    { id: 1, name: 'Joe'},
    { id: 3, name: 'Sam'},
    { id: 8, name: 'Eve'}
];

// or, a combination of the two
var people = {
    1 : { id: 1, name: 'Joe'},
    3 : { id: 3, name: 'Sam'},
    8 : { id: 8, name: 'Eve'}
};

如果您要存储(或希望可能拥有)多个“价值”部分(例如,增加他们的年龄等),显然第二或第三种选择是可行的,因此,为了论证,让我们假设在此结构中再也不需要任何数据值了。您选择哪一个,为什么?

编辑 :该示例现在显示最常见的情况:非顺序ID。


问题答案:

每个解决方案都有其用例。

我认为,如果您要定义一对一的关系(例如简单的映射),则第一种解决方案是好的,尤其是当您需要使用该键作为查找键时。

一般而言,第二种解决方案对我来说是最健壮的,如果不需要快速查找键,我可能会使用它:

  • 它是自描述的,因此您不必依赖任何使用 人员的人 就知道密钥是用户的ID。
  • 每个对象都是独立的,这更适合将数据传递到其他地方-而不是您随便传递两个参数(id和name)。
  • 这是一个罕见的问题,但是有时键值可能无效,无法用作键。例如,我曾经想映射字符串转换(例如,“:”到“>”),但是由于“:”不是有效的变量名,因此我不得不使用第二种方法。
  • 它很容易扩展,以防万一您需要向某些(或全部)用户添加更多数据。(对不起,我知道您的“为了辩论而已”,但这是一个重要方面。)

如果您需要快速的查找时间+上面列出的一些优点(传递数据,自我描述),那么第三种方法将是不错的选择。但是,如果您不需要快速的查找时间,则麻烦得多。同样,无论哪种方式,如果对象中的id与
people中 的id有所不同,都将有出错的风险。



 类似资料:
  • 问题内容: 我有: 我想将其转换为该对象: 在Python中,有一个简单的习惯用法。jQuery或纯Javascript中是否有类似的东西,还是我必须做很长一段路? 问题答案: 简单的JS函数将是: 当然,您实际上也可以实现zip等功能,因为JS支持更高阶的类型,这使这些函数语言主义变得容易:D

  • 问题内容: 在我的脚本中,有必要创建一个哈希表,我在Google中搜索了此表。为此,大多数人都建议使用JavaScript对象。问题是,哈希表中的某些键具有“”。在他们中。我可以使用关联数组轻松创建这些键。 我不明白为什么关联数组不好。在我查看的站点中提到的第一件事是length属性。我来自使用散列的Perl背景。最常见的用途是从键中获取值,检查键是否存在,删除键值对,添加键值对。如果这些是我的常

  • 问题内容: 我想这样转换一个对象: 分成键值对数组,如下所示: 如何在JavaScript中将对象转换为键值对数组? 问题答案: 您可以使用和执行此操作

  • 我要转换如下所示的对象: 键值对的数组,如下所示: 如何在JavaScript中将对象转换为键值对数组?

  • 我有一个带有两个数组的javascript对象,如图所示, 我试图按排名1,2,3进行排序。。但保留与等级相关的名称。 我应该重新配置我的对象以使排序更容易吗? 我目前正在使用 按顺序排列,但名称不保留。 感谢大家的帮助。谢谢

  • 问题内容: 给定一个JavaScript对象,如何将其转换为对象数组(每个对象都带有键,值)? 例: 结果像: 问题答案: var data = { firstName: ‘John’, lastName: ‘Doe’, email: 'john.doe@gmail.com‘ }