面对非常糟糕的 angular.copy 用于大型数组的性能

Facing very bad performance for angular.copy for large array

本文关键字:用于 大型 数组 性能 copy angular 非常 面对      更新时间:2023-09-26

[编辑]

我们确定正则表达式不是问题,而是angular.copy.因此我将问题从正则表达式问题更新为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 函数进行此计算,在我的 60 位戴尔 Latitude E5540 上大约需要 8 秒到 1 分钟,配备 8GB 内存英特尔酷睿 I5 2 和 2.6 GHz。

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.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});