JavaScript中如何为用户对象设置ID?数组索引与ID混淆疑问
你的写法完全正确,也符合通用编码规范
数组索引和用户ID本来就是两个完全不同的概念,不用纠结它们的数字是否一致:
- 数组索引是位置标识:它只表示元素在数组里的顺序位置,从0开始计数,和你的业务数据(比如用户ID)没有任何绑定关系。哪怕你把John的ID改成
100,他在数组里的位置还是users[0],这是完全正常的。 - 用户ID是业务唯一标识:这个ID是用来在业务场景里唯一识别用户的——比如从数据库取数据时,ID可能是自增的序列,或者是UUID这类字符串,它的作用是绑定到具体用户本身,和用户在数组里的位置无关。
为什么别让ID和索引绑定?
要是你强行让ID和索引数字一致(比如把John的ID设为0),后续一旦数组元素顺序变化(比如删除某个用户、对数组排序),索引对应的用户就会变,但用户ID是固定的,这时候用索引找用户就会出问题。比如删除users[0]后,原来的users[1]变成users[0],但Emma的ID还是2,这时候用ID找就不会出错,用索引找就会把Emma当成原来的John。
小建议:如果经常按ID查找用户
可以把数组转成以ID为键的对象,这样查找更直接:
const usersMap = { "1": { "id": "1", "name": "John", "age": 20, "address": "123 Main Street" }, "2": { "id": "2", "name": "Emma", "age": 23, "address": "12 Main Street" } }; // 直接通过ID访问用户 console.log(usersMap["1"].name); // 输出 John
内容的提问来源于stack exchange,提问作者Muhammed Ali Kurt
相关产品推荐
相关产品推荐

