如何在 JavaScript 中从指定的对象创建一个新对象,其中所有键都小写?
在 JavaScript 中,有很多方法可以从旧对象创建新对象。创建一个与现有对象具有相同键但所有键都小写的新对象是一个常见的用例。当处理来自多个具有不规则键大小写的数据源的数据时,这非常有用。在这篇博文中,我们将探讨在 JavaScript 中创建具有小写键的新对象的各种方法。
但是,在此之前,务必记住,虽然创建具有小写键的新对象在处理来自各种数据源的数据时可能很有帮助,但也要注意更改键大小写可能带来的后果。
例如,它可能会破坏当前期望键采用特定大小写的代码,或者可能会干扰期望键采用特定大小写的外部 API 或数据库。在更改对象的键大小写之前,务必对代码运行全面测试,并考虑用例的具体要求。
Object.assign()
可以使用内置 JavaScript 方法 Object.assign() 将一个或多个现有对象组合在一起创建一个新对象。它还可以用于更改对象的键大小写,方法是创建一个具有与原始对象相同键但所有键都小写的新对象。使用 Object.assign() 创建具有小写键的新对象的的基本语法是:
示例
<html> <body> <div id="myDiv"></div> <script> var original = {name: "John", AGE: 25}; var lowercase = Object.assign({}, original); document.getElementById("myDiv").innerHTML = JSON.stringify(lowercase); </script> </body> </html>
在此示例中,Object.assign() 函数创建一个新对象,并赋予其原始对象的属性。新对象中将存在与旧对象相同的键,但它们将是小写。
您可以使用 Object.keys() 函数遍历原始对象的键,并在将其传递给 Object.assign() 之前将其更改为小写:
示例
<html> <body> <div id="myDiv"></div> <script> var original = { name: "John", AGE: 25 }; var lowercase = Object.assign( {}, ...Object.keys(original).map((k) => ({ [k.toLowerCase()]: original[k], })) ); document.getElementById("myDiv").innerHTML = JSON.stringify(lowercase); </script> </body> </html>
这种方法使用 Object.keys() 方法获取原始对象键的数组。Array.map() 方法用于迭代键并创建一个具有相同键但小写的新对象。然后使用扩展运算符将新对象传递给 Object.assign()。
for-in 循环
使用 for-in 循环迭代原始对象的键并创建一个具有相同键但小写的新对象是创建具有小写键的新对象的另一种方法。使用 for-in 循环创建具有小写键的新对象的的基本语法是:
示例
<html> <body> <div id="myDiv"></div> <script> var original = { name: "John", AGE: 25 }; var lowercase = {}; for (var key in original) { lowercase[key.toLowerCase()] = original[key]; } document.getElementById("myDiv").innerHTML = JSON.stringify(lowercase); </script> </body> </html>
在此示例中,for-in 循环迭代原始对象的键,toLowerCase() 函数用于将每个键从大写更改为小写,并将相应的值分配给新对象。
JSON.parse() 和 JSON.stringify()
使用 JSON.parse() 和 JSON.stringify() 方法是创建具有小写键的新对象的第三种方法。使用这些方法创建具有小写键的新对象的的基本语法是:
示例
<html> <body> <div id="myDiv"></div> <script> var original = { name: "John", AGE: 25 }; var lowercase = JSON.parse(JSON.stringify(original).toLowerCase()); document.getElementById("myDiv").innerHTML = JSON.stringify(lowercase); </script> </body> </html>
在此示例中,JSON.stringify() 方法用于将原始对象转换为 JSON 字符串。然后,toLowerCase() 方法用于将 JSON 字符串中的所有键转换为小写。
最后,JSON.parse() 方法用于将 JSON 字符串转换回 JavaScript 对象。使用这种方法,将创建一个具有与原始对象相同键但所有键都小写的新对象。
这种方法需要将对象转换为字符串然后再转换回来,这使得它的效率低于前两种方法。它也只适用于简单的对象;对于具有特殊属性或方法的对象,它可能无法正常工作。
结论
在本文中,我们探讨了在 JavaScript 中创建具有小写键的新对象的各种方法。使用 Object.assign() 方法是创建与现有对象具有相同键但所有键都小写的新对象的一种快速有效的方法。for-in 循环是另一种迭代对象键并创建具有相同键但小写的新对象的选择。虽然也可以使用 JSON.parse() 和 JSON.stringify() 方法创建具有小写键的新对象,但这是一种效率较低的方法,并且可能不适用于所有类型的对象。