对于大型阵列,angular.copy面临非常糟糕的性能

时间:2016-03-14 07:06:14

标签: javascript arrays regex performance large-data

[编辑]

我们发现正则表达式不是问题,而是angular.copy。因此我将问题从RegEx问题更新为Angular.copy问题。

[原文]

我想将名称从格式“BD12”更改为“BD”,例如,在所有记录中,我有一个大约的数组。此对象类型的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位戴尔Latitude E5540上使用8GB内存英特尔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 }));

如何改善这个?

[编辑] 我还需要原始阵列。

1 个答案:

答案 0 :(得分:1)

替换

angular.copy(data.results)

data.results.map(function(value){value = Object.create(value);return value});

或只是

$scope.outWardCodes = data.results.map(function(value){value = Object.create(value); value.Name = value.Name.match("^[a-zA-Z]+"); return value});