Я использую собственный язык в Blaze Advisor (правило enginge). Я ищу алгоритм, чтобы сохранить только верхние N элементов в массиве группами, образованными определенным атрибутом. В качестве примера есть два массива:Хранить верхние N элементов массива по группам
parrent[0].id = 1
parrent[1].id = 2
И второй массив:
child[0].parrentId = 1
child[0].result = 3.0
child[1].parrentId = 1
child[1].result = 2.0
child[2].parrentId = 1
child[2].result = 4.0
child[3].parrentId = 1
child[3].result = 6.0
child[4].parrentId = 1
child[4].result = -1.0
child[5].parrentId = 2
child[5].result = 1.0
child[6].parrentId = 2
child[6].result = 16.0
child[7].parrentId = 2
child[7].result = 2.0
child[8].parrentId = 2
child[8].result = -10.0
child[9].parrentId = 2
child[9].result = 5.0
Я хотел бы держать только три верхних элемента для каждого parrentId
в child
массиве, как показано result
атрибутом. На моем языке я могу выполнять все основные операции - я могу использовать if/else, в то время как для каждой конструкции и для создания новых переменных. Я могу сортировать массив asc/desc и получать индексы отсортированных элементов. Я могу удалить элементы массива.
Для моих данных мне нужно следующий результат:
child[0].parrentId = 1
child[0].result = 3.0
child[1].parrentId = 1
child[2].result = 4.0
child[3].parrentId = 1
child[3].result = 6.0
child[6].parrentId = 2
child[6].result = 16.0
child[7].parrentId = 2
child[7].result = 2.0
child[9].parrentId = 2
child[9].result = 5.0
Приятно знать, что есть кто-то другой, кто использует советника Blaze :) –