如何在 JavaScript 中使用键的路径来展开对象?

javascriptweb developmentfront end technology

在 JavaScript 中,可以通过创建对象的浅表副本来"展开"对象。这对于创建对象的快照很有用,但如果对象稍后被修改,则可能会导致问题。如果需要展开对象,可以使用键的路径来恢复原始结构。

使用键的路径

展开对象时,键会连接成一个字符串。您可以使用此字符串通过创建具有相同键和值的对象来展开对象。

例如,考虑以下对象。

var obj = { "foo.bar": "baz", "foo.qux": "quux" };

You can unflatten this object by creating an object with the same keys and values.

<!doctype html> <html> <head> <title>Examples</title> </head> <body> <div id="result1">Original Object:</div><br/> <div id="result2">After Unflatten:</div> <script> var obj = { "foo.bar": "baz", "foo.qux": "quux" }; var unflattenedObj = {}; for (var key in obj) { var value = obj[key]; var path = key.split("."); var current = unflattenedObj; for (var i = 0; i < path.length - 1; i++) { var part = path[i]; current[part] = current[part] || {}; current = current[part]; } current[path[path.length - 1]] = value; } document.getElementById("result1").innerHTML += JSON.stringify(obj); document.getElementById("result2").innerHTML += JSON.stringify(unflattenedObj); console.log(unflattenedObj) </script> </body> </html>

展开的好处

展开对象有许多好处。首先,它可以帮助您避免重复的键。如果您有两个同名的键,则在展开对象时它们将被覆盖。其次,它可以帮助您保留对象的原始结构。当您需要将对象传递给需要特定格式的函数时,这一点很重要。

结论

展开对象很简单,只需创建一个具有相同键和值的对象即可。这对于避免重复的键和保留原始对象结构很有用。


相关文章