Refresh . An additional comment about values xand their positions in arrays makes below unimportant.
There is no particular trick, you just scan the arrays and create your result. This is nothing more than a nested loop. If you are trying to make the most out of a wide range of JavaScript engines, avoid unnecessary function calls.
Something along the lines of:
function sumYValues(arrays) {
var outer, inner, array, entry, sum, result, x;
result = [];
if (arrays.length > 0) {
array = arrays[0];
for (inner = 0; inner < array.length; ++inner) {
entry = array[inner];
result[inner] = {x: entry.x, y: entry.y};
}
for (outer = 1; outer < arrays.length; ++outer) {
array = arrays[outer];
for (inner = 0; inner < array.length; ++inner) {
entry = array[inner];
result[inner].y += entry.y;
}
}
}
return result;
}
0 ( 1) array.length - 1. , (array.length - 1 0 ( 1)) , , "t22 > ". , , C, ( 0 , ), JavaScript.
, , .
x , , , , x , , . :.
function sumYValues(arrays) {
var outer, inner, ar, entry, sum, result, x;
sum = {};
for (outer = 0; outer < arrays.length; ++outer) {
ar = arrays[outer];
for (inner = 0; inner < arrays.length; ++inner) {
entry = ar[inner];
sum[entry.x] = (sum[entry.x] || 0) + entry.y;
}
}
result = [];
for (x in sum) {
result.push({x: x, y: sum[x]});
}
return result;
}
sum, , x = > y, .
:
sum[entry.x] = (sum[entry.x] || 0) + entry.y;
sum x, sum[entry.x] undefined, "" . - || x sum 0, y .