gpt4 book ai didi

javascript - 在 javascript 中只向数组的一个对象添加属性可以吗?

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:06:36 38 4
gpt4 key购买 nike

有时我偶尔会做 JavaScript,我偶然发现了一个关于“最佳实践”的问题。假设我有一组相同类型和结构的对象,我只想用一个标志标记其中一个(例如 isOptimal: true)。这显然是可行的,但我在徘徊,如果在 JS 世界中只有一个对象包含特定属性而其他数组条目在其位置上具有“未定义”,这是否被认为是一种好/坏的做法?也许有一些缺点,我很难看到?显然存在未定义检查。非常感谢您对此的意见,谢谢。

最佳答案

假设您从数组中挑选了两个对象,并希望确保一个是最优的而另一个不是:

 if(obj.isOptimal !== obj2.isOptimal)

现在,如果 isOptimaltrueundefined,那么它将起作用,如果您将其中之一设置为 false上面的行停止工作为 false !== undefined

如果您构建非结构化数据,您应该始终确保没有不必要的副作用,例如本例。

对于基元,我总是将它们初始化为默认值(""0false),我总是将数组初始化为一个空的 ([]),除了 undefined 是一个可行的选项(例如,如果 user.ageundefined 我们还不知道年龄,如果它是 0 用户刚刚出生),那么你必须在用它做数学运算之前总是检查 undefined

然而,对于嵌套对象,我认为 undefined 是一个很好的默认值。然后,在进行嵌套访问之前,您必须始终检查该嵌套对象是否存在:

 if(user.car) 
alert(user.car.model);

如果您必须通过添加附加属性来向新结构添加属性(例如,用户存储在 localStorage 中,那么存储中的旧对象可能没有 isOptimal 属性) 您可以使用 Object.assign 来确保对象结构:

 const user = Object.assign({ isOptimal: false }, userFromStorage);

关于javascript - 在 javascript 中只向数组的一个对象添加属性可以吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54591423/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com