hasOwnProperty()方法是否区分大小写?是否还有其他不区分大小写的替代版本hasOwnProperty?
我有一个特定的对象,其中属性的确切情况未提前知道.例如,属性名称可能是"AbC"或"Abc"或"abc"等.
但是,我知道只有一个存在.这是我知道不可能有两个属性"ABC",也是一个属性"ABC".
属性名称本身区分大小写.因此,如果它存储为Object.Abc并且我查找了Object.abc,我将找不到该属性.
在我的对象中可能有1,000个这样的属性.
如果每次我想进行查找,我会想要找到的属性的小写值与属性名称的小写值进行比较,这样可能,但效率很低,如下所示:
propertyName = inputValue.toLowerCase();
for (var i in theObject) {
if (propertyName == i.toLowerCase()); // found a matching property name
}
Run Code Online (Sandbox Code Playgroud)
有人知道更聪明的做法吗?
由于理由需要很长时间来解释,我不能只重新创建对象并使所有属性都是小写的.我确实知道如果可能的话我可以找到
theObject['inputValue'.toLowerCase()]
Run Code Online (Sandbox Code Playgroud)
直.但正如我所说,我不能.对象中的属性名称是它们的属性,并且无法更改它们.问我为什么会出现手头问题的巨大偏离.请接受我的说法,即对象被它拥有的属性名称所困.
有没有人知道在这种情况下进行不区分大小写的属性名称查找的有效方法?
我试图通过对象键来修复javascript数组中的重复项。循环在同一对象中将“虚拟现实”和“虚拟现实”添加为不同的键。有没有办法使Javascript对象不区分大小写?
虽然不是必需的,但枚举键通常全部以大写字母声明。但是,枚举值可以与键本身不同。
declare enum MyEnum {
PRODUCTION = "production",
DEVELOPMENT = "development",
SANDBOX = "sandbox"
}
Run Code Online (Sandbox Code Playgroud)
如果我要使用与我的枚举值匹配的外部字符串值来索引我的枚举,它将不起作用,因为键与值不同:
const lowercase = "production";
const UPPERCASE = "PRODUCTION";
const bad = MyEnum[lowercase]; // does not work
const good = MyEnum[UPPERCASE]; // works
Run Code Online (Sandbox Code Playgroud)
我想使用枚举值作为索引枚举的方式。我是否被迫始终匹配相同的枚举值和枚举键才能动态索引枚举,或者我是否必须使用一些字符串值操作来确保键与值匹配?
我想在不区分大小写的对象中找到键。
对象非常大,因此我无法修改该对象以使所有键都变为小写/大写。
例如。
我var _columns = {...}
现在需要查找Id密钥是否存在。目前,我正在使用其他解决方案。
if (this._columns['Id']) {
this._idColumnName = 'Id';
} else if (this._columns['id']) {
this._idColumnName = 'id';
} else if (this._columns['ID']) {
this._idColumnName = 'ID';
}
Run Code Online (Sandbox Code Playgroud)
S有任何方法可以通过使用JavaScript中的任何模式或任何其他方式来检查键的存在。
通常我会这样
if (key in obj) {
//other stuff
}
Run Code Online (Sandbox Code Playgroud)
但是我实际上并不知道它们的大小写相同。最好的方法是什么?我宁愿不遍历整个数组,调用.toLowercase对象中的每个键,但这是唯一的选择吗?