如何在 JavaScript 中使用路径作为键来展开扁平化的对象?
在 JavaScript 中,可以通过创建对象的浅拷贝来“扁平化”对象。这对于创建对象的快照很有用,但如果稍后修改对象可能会导致问题。如果需要展开扁平化的对象,可以使用路径作为键来恢复其原始结构。
使用路径作为键
当对象被扁平化时,键会被连接成单个字符串。可以通过创建具有相同键和值的来对象来使用此字符串展开对象。
例如,考虑以下对象。
var obj = { "foo.bar": "baz", "foo.qux": "quux" };
可以通过创建具有相同键和值的来对象来展开此对象。
<!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>
展开的益处
展开对象有很多好处。首先,它可以帮助你避免重复键。如果两个键具有相同的名称,则在对象被扁平化时会被覆盖。其次,它可以帮助你保留对象的原始结构。当你需要将对象传递给期望特定格式的函数时,这可能很重要。
结论
展开对象只需创建具有相同键和值的来对象即可。这对于避免重复键和保留原始对象结构很有用。
广告