Javascript中对象与数组的键/值对
假设您有一个非常简单的数据结构:
(personId, name)
…并且您想将其中一些存储在javascript变量中。如我所见,您有三个选择:
// a single objectvar 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有所不同,都将有出错的风险。
以上是 Javascript中对象与数组的键/值对 的全部内容, 来源链接: utcz.com/qa/400410.html