Уже несколько часов тяну меня за волосы, так что пришло время получить помощь от SO
У меня есть множество объектов, таких как:
const data = [
{city: "London", surname: "jones"},
{city: "Manchester", surname: "jones"},
{city: "Leeds", surname: "smith"},
{city: "Birmingham", surname: "smith"},
{city: "Rhyl", surname: "clarkson"},
{city: "Blackpool", surname: "walker"},
{city: "Rhyl", surname: "walker"},
{city: "Blackpool", surname: "fletcher"}
];
// Actual data is much more complex, this is just a simplified example
Я в основном пытаюсьсгруппировать мои данные на основе поля, в этом примере surname
.Значения фамилии не известны заранее, поэтому она должна быть динамичной.Таким образом, вы посмотрите на следующий элемент в массиве, если он совпадает с предыдущим его сгруппированным, , но , если он не совпадает, тогда он начинает новую группу.
конечный результат будетвыглядело примерно так:
const outcome = {
jones: [...2 objects],
smith: [...2 objects],
clarkson: [...1 objects],
walker: [...2 objects],
fletcher: [...1 objects]
}
Моя первоначальная мысль заключалась в том, что мне нужно пройтись по каждому элементу и сравнить его со следующим, так что сначала я посмотрел на уменьшение, но не смог сделать это правильно, поэтому я начал цикл поэлементы в массиве data
и сравнение его со следующим (получая индекс из map
и увеличивая его, чтобы увидеть следующий элемент, но это выглядит очень странно.
algo's и CS не моисильная сторона, но я чувствую, что способ, которым я делаю это, грязен, и что уже есть шаблон для этого, так как это должно быть обычной задачей
Мой следующий подход будет заключаться в цикле каждого добавления, добавления чего-либо к даннымтакие как grouping
id, то есть group: 1
, сохраняют приращение и просто ++
, когда surname
не соответствует предыдущему, но это все равно не звучит "оптимально" в качестве идентификатора, тогданужно набрать filter
для каждой группы, чтобы получить данные в правильном формате.
NB Я видел несколько связанных с этим вопросов SO, связанных с моей проблемой, но они упускают важный фактор необходимости сортировкипо динамическому значению, это простая задача, если известны значения
Любое руководство будет с благодарностью
Спасибо