【发布时间】:2016-06-29 03:06:18
【问题描述】:
[编辑]
我们发现问题不是正则表达式,而是 angular.copy。因此我将问题从 RegEx 问题更新为 Angular.copy 问题。
[原创]
例如,我想在所有记录中将名称从格式“BD12”更改为“BD”,并且我有一个大约为 10 的数组。此对象类型的 3000 条记录:
{
Name: "BD12",
PostCode: "SE 15477 28954",
State_Id: 2,
State: null,
Country_Id: 2,
Country: "United Kingdom",
GridReference: null,
Region: null,
AreaCode: "01274",
Latitude: 53.75672,
Longitude: -1.7667413,
Easting: 415477,
Northing: 428954,
Id: 2
}
我正在使用 Array.map 函数进行此计算,在我的 64 位 Dell Latitude E5540 上使用 8GB ram Intel CoreI5 2 和 2.6 GHz 大约需要 30 秒到 1 分钟。
data.results = [];//contains [2500] records
$scope.outWardCodes = angular.copy(data.results)
.map(wc=> { wc.Name = wc.Name.match("^[a-zA-Z]+"); return wc }));
如何改进?
[编辑] 我还需要原始数组。
【问题讨论】:
-
你能告诉我们做
angular.copy(data.results)需要多长时间吗?以及用data.results.slice(0)替换它做了多少改进? -
哦 Angularrrrrrrrrrrrrrrrr。当我测试 angular.copy(data.results) 时,它一直花费了 2 分 48 秒。地图功能只需要几毫秒。第二个问题是结果是微风.js 具有大量对象遍历引用的对象可能也是问题所在。 Array.slice 只需要毫秒。 :P
-
我应该删除问题还是编辑它?
-
将此作为答案发布,因为它可以帮助某人做出正确的决定。
标签: javascript arrays regex performance large-data