【发布时间】:2022-11-28 20:29:25
【问题描述】:
我有一个变量result,其中包含大约 1M 个条目,如下所示:
result = [
{
'name': 'x',
'other fields': '...',
},
{
'name': 'y',
'other fields': '...',
},
.. and so on ..
]
我想创建另一个仅包含名称列表但采用对象格式的数组:
nameArray = [
{name: 'x'},
{name: 'y'},
.. and so on ..
]
我目前正在使用以下循环,但对于 1M 条目来说它非常慢
let nameArray = []
result.forEach(item => {
let name = {name : item.name}
nameArray.push(name)
});
实现这一目标的最快方法是什么?我也试过 lodash 地图,但还是有点慢。但我宁愿不使用 lodash,因为它增加了一个依赖项。
【问题讨论】:
-
您的原始数组已经包含您想要的输出。为什么不简单地忽略其他属性呢?
-
@GerardoFurtado 因为原件包含太多钥匙。我需要将这个变量保存在内存中,因此需要减小它的大小。
-
您可能会以某种方式将数组拆分为 n 个数组,并使用不同的承诺将值推送到新数组,因此它们在不同的线程中异步运行。
-
我猜成本是因为 push() 调用 - 使用地图而不是例如
let nameArray = result.map(item => ({ name: item.name }))
标签: javascript