我有一个类似于下面结构的数组。我正在尝试根据公司名称(例如公司 A)尽可能有效地减少数组。所以基本上,在公司名称相同的情况下,组合内部数组,以便将每个位置的数字添加到相应位置的匹配数组的数字中。此外,如果其中一个数组缺少电子邮件或电话,请获取具有值的电子邮件或电话位置。底部的 resultArray 显示了我想要达到的结果。
*注意 - 我不知道公司后面的数字长度。长度是动态设置的,但每个内部数组的长度总是相同的。所以有时所有的 innerArray 都是 6 个值,有时它们的长度可能是 20 个值。
var array = [
[Company A, A-Email, A-Phone, 2, 5, 10],
[Company A, A-Email, , 1, 10, 7],
[Company A, , A-Phone, 3, 2, 4],
[Company B, B-Email, , 1, 10, 7],
[Company B, B-Email, B-Phone, 5, 10, 8],
[Company C, C-Email, C-Phone, 3, 2, 1]
]
var resultArray = [
[Company A, A-Email, A-Phone, 6, 17, 21],
[Company B, B-Email, B-Phone, 6, 20, 15],
[Company C, C-Email, C-Phone, 3, 2, 1]
]
所以最初我正在尝试这样的事情,因为数组已经按公司名称排序:
for (var i = 0; i < array.length - 1; i++) {
var firstArray = array[i]
var nextArray = array[i + 1]
if (nextArray[0] == firstArray[0]) {
for (var t = 3; t <= firstArray.length; t++) {
firstArray[t] = firstArray[t] + nextArray[t]
}
resultArray.push(firstArray);
} else {continue;}
我有大量数据,这样做真的很繁重,而且我的功能超时了,所以我不完全确定它是否有效。我开始尝试用哈希表做一个 reduce 方法,但我不太明白。关于如何最有效地做到这一点的任何想法?
我也不能使用 jQuery,所以请纯粹使用香草 javascript。