Вы можете переместить find
в l oop и взять только первые десять символов даты ISO 8601 для comapring.
var data = [{ x: "2020-01-24T10:30:02.000Z", y: 2 }, { x: "2020-01-24T08:19:07.000Z", y: 2 }, { x: "2020-01-23T16:12:36.000Z", y: 5 }, { x: "2020-01-23T08:19:07.000Z", y: 2 }],
result = [];
for (let { x, y } of data) { // iterate data, get x and y
x = x.slice(0, 10); // take yyyy-mm-dd only
let temp = result.find(q => q.x.slice(0, 10) === x); // look for same data
if (temp) temp.y += y; // if found add to y
else result.push({ x: x + 'T00:00:00.000Z', y }); // if not create object and push
}
console.log(result);
Более быстрый подход к объекту.
var data = [{ x: "2020-01-24T10:30:02.000Z", y: 2 }, { x: "2020-01-24T08:19:07.000Z", y: 2 }, { x: "2020-01-23T16:12:36.000Z", y: 5 }, { x: "2020-01-23T08:19:07.000Z", y: 2 }],
hash = Object.create(null),
result;
for (let { x, y } of data) {
x = x.slice(0, 10);
if (hash[x]) hash[x] += y;
else hash[x] = y;
}
result = Object
.entries(hash)
.map(([x, y]) => ({ x: x + 'T00:00:00.000Z', y }));
console.log(result);