【发布时间】:2023-01-09 18:30:44
【问题描述】:
我正在尝试将 JavaScript 对象数组转换为带有参数的 URL 字符串,如下所示:
const objects = [{
firstName: "John",
lastName: "Doe",
age: 46
},
{
country: "France",
lastName: "Paris"
}
]
let entry_arr = [];
objects.forEach(obj => {
Object.entries(obj).forEach(entry => {
entry_arr.push(entry.join('='));
});
});
let entry_str = entry_arr.join('&');
console.log(entry_str);
从表面上看,上面的代码是有效的。有一个问题尽管。
问题
如您所见,我有 2 个嵌套的 forEach 循环。为了获得更好的性能,我希望我知道如何避免这种嵌套,而是只使用一个 forEach 循环。
我怎样才能只用一个循环达到相同的结果?
【问题讨论】:
-
看不到如何避免 2 个循环
-
它是一个包含多个不同键的对象的数组,因此您需要两个循环。如果您创建一个始终具有相同键的结构,那么您可以使用一个循环来完成此操作。
-
Smells like Premature Optimisation。您是否经常调用此代码以致于对性能产生显着影响?
-
请注意,您的代码无法转义数据中可能存在的任何特殊字符。使用 URLSearchParams 会更健壮。
标签: javascript object foreach