javascript - 有没有一种有效的方法来进行不区分大小写的 JavaScript 对象属性名称查找?

标签 javascript dictionary case-insensitive

<分区>

我有一个特定的对象,其中属性的确切大小写无法提前知道。例如,属性名称可能是“AbC”或“Abc”或“abc”等。

但是,我知道只有一个存在。也就是说,我知道不能同时属性“AbC”和属性“abc”。

属性名称本身是区分大小写的。因此,如果它存储为 theObject.Abc 并且我查找 theObject.abc,我将找不到该属性。

在我的对象中可能有 1,000 个这样的属性。

这是可能的,但效率低下,如果每次我想进行查找时,我都将我想要查找的属性的小写值与属性名称的小写值进行比较,如下所示:

propertyName = inputValue.toLowerCase();
for (var i in theObject) {
   if (propertyName == i.toLowerCase()); // found a matching property name
}

有人知道更聪明的方法吗?

由于解释起来会花费太长时间,我不能只重新创建对象并将所有属性都设为小写。我确实意识到如果那是可能的我就能找到

theObject['inputValue'.toLowerCase()]

直接。但正如我所说,我不能。 theObject 中的属性名称是它们的原样,不能更改。问我为什么会偏离手头的问题。请相信我的话,theObject 被它所拥有的属性名称所束缚。

有人知道在这种情况下进行不区分大小写的属性名称查找的有效方法吗?

最佳答案

比 Sigfried 更进一步:

var theObject = {aBc: 1, BBA: 2, CCCa: 4, Dba: 3};

var lcKeys = Object.keys (theObject).reduce (
                          function (keys, k) { keys[k.toLowerCase()] = k; 
                                               return keys }, {});

function getValue (key) { return theObject[lcKeys[key.toLowerCase ()]] }

console.log (getValue ('abc'));
console.log (getValue ('Dba'));

关于javascript - 有没有一种有效的方法来进行不区分大小写的 JavaScript 对象属性名称查找?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35217337/

相关文章:

javascript - 在 javascript 的框架上调用 print() 会挂起 IE 8 浏览器

jquery - 与 jQuery 比较不区分大小写?

python - 如何在 Windows 上的 python 中创建区分大小写的文件?

grails - 嵌套属性的大小写不区分顺序

javascript - 添加 "bServerSide": true in datatable giving error TypeError: g is null

javascript - 如何从 Javascript OnClick 函数中排除 <a> 以便链接本身起作用?

javascript - 在鼠标悬停时反转文本颜色

Django 对象创建一个或多个项目(动态)

Python3 无法将字符串转换为 dict 或 json

swift - 如何将枚举用于类函数