Javascript对象属性-如果不存在,则创建属性
Javascript object properties - create property if not exist
我正试图以最优雅的方式执行这段代码:
if (internalTableName in self.columnMap &&
internalColumnName in self.columnMap[internalTableName]) {
console.error('dupelicates');
}
else {
try {
self.columnMap[internalTableName][internalColumnName] = logicalColumnName;
} catch (err) {
self.columnMap[internalTableName] = {};
self.columnMap[internalTableName][internalColumnName] = logicalColumnName;
}
}
我可以将try/catch块转到:
if (internalTableName in self.columnMap &&
internalColumnName in self.columnMap[internalTableName]) {
console.error('dupelicates');
}
else {
if (internalTableName in self.columnMap) {
self.columnMap[internalTableName][internalColumnName] = logicalColumnName;
}
else {
self.columnMap[internalTableName] = {};
self.columnMap[internalTableName][internalColumnName] = logicalColumnName;
}
}
我想知道Javascript是否提供了一些用于检查无效性的运算符,这些运算符可以使这个逻辑以更优雅的方式编写,减少if子句。
感谢
常见模式是使用||
运算符:
self.columnMap[internalTableName] = self.columnMap[internalTableName] || {};
self.columnMap[internalTableName][internalColumnName] = logicalColumnName;
我想你要找的是
if (!(internalTableName in self.columnMap))
self.columnMap[internalTableName] = {};
if (!(internalColumnName in self.columnMap[internalTableName]))
self.columnMap[internalTableName][internalColumnName] = logicalColumnName;
else
console.error('duplicates');
您可以使用一个辅助变量将其缩短一点,并通过简单的虚假性检查空属性:
var table = self.columnMap[internalTableName] || (self.columnMap[internalTableName] = {});
if (!table[internalColumnName])
table[internalColumnName] = logicalColumnName;
else
console.error('duplicates');
从JS版本ES2020开始,您可以使用零合并赋值:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Nullish_coalescing_assignment
const a = { duration: 50 };
a.duration ??= 10;
console.log(a.duration);
// Expected output: 50
a.speed ??= 25;
console.log(a.speed);
// Expected output: 25
相关文章:
- 查找数组's按属性不存在于另一个数组中的对象
- 错误 TS2339:类型“{}”上不存在属性“forEach”
- Express和Typescript-Error.stack和Error.status属性不存在
- 在'用于'如果javascript中不存在对象属性,则循环
- Realm React Native-需要迁移:目标类型'字符串'不会'不存在于属性'电
- 有没有一个lodash函数可以合并两个对象并删除其中一个对象的属性(如果它们没有)'不存在于另一个中
- Javascript:当属性可能不存在时,在对象中使用OR条件
- Javascript for ..有时通过不存在的属性
- TypeScript 工厂模式说属性不存在
- 如果属性不存在,则不显示对象的数据
- Spring复选框选中的属性不存在
- 属性不存在
- 如果属性不存在,为什么它不能通过“返回一个空数组”的测试?
- 如果对象属性不存在,则创建普通变量回退的Javascript
- Onsen UI 2 demo:属性不存在
- 当Object属性不存在时触发错误
- Angular:在ng-repeat中设置一个默认值,如果某项的'属性不存在
- MeteorJS用户配置文件对象属性不存在
- Angular2属性不存在'any[]'(JSON)
- Angular2,订阅事件发射器上的属性不存在