Перестановки в объекте JSON - PullRequest
0 голосов
/ 18 июня 2019

Итак, я хотел бы напечатать часть кода (в Node.js), которая выдала бы мне все варианты объектов внутри объекта JSON. Каждая перестановка должна быть уникальной (две перестановки идентичны, если в них есть абсолютно одинаковые объекты, независимо от их положения). Мой объект JSON выглядит так:

[
 {
   "ID": "5465464",
   "e-mail": "something@gmail.com",
   "name": "John"
 },
 {
   "ID": "5433364",
   "e-mail": "something2@gmail.com",
   "name": "Nick"
 },
 {
   "ID": "5465244",
   "e-mail": "something3@gmail.com",
   "name": "George"
 },
 {
   "ID": "5464874",
   "e-mail": "something4@gmail.com",
   "name": "Rick"
 },
 {
   "ID": "5442164",
   "e-mail": "something5@gmail.com",
   "name": "Wayne"
 }
]

Таким образом, вывод должен дать мне все возможные комбинации всех объектов (по 3 объекта в комбинации), и он должен выглядеть примерно так:

[
    "PERMUTATION1":[
        {
           "ID": "5465464",
           "e-mail": "something@gmail.com",
           "name": "John"
         },
         {
           "ID": "5433364",
           "e-mail": "something2@gmail.com",
           "name": "Nick"
         },
         {
           "ID": "5465244",
           "e-mail": "something3@gmail.com",
           "name": "George"
         }
    ],
    "PERMUTATION2":[
        {
           "ID": "5465464",
           "e-mail": "something@gmail.com",
           "name": "John"
         },
         {
           "ID": "5464874",
           "e-mail": "something4@gmail.com",
           "name": "Rick"
         },
         {
           "ID": "5465244",
           "e-mail": "something3@gmail.com",
           "name": "George"
         }
    ],
    "PERMUTATION3":[
        {
           "ID": "5465464",
           "e-mail": "something@gmail.com",
           "name": "John"
         },
        {
           "ID": "5465464",
           "e-mail": "something@gmail.com",
           "name": "John"
        },
        {
           "ID": "5465464",
           "e-mail": "something@gmail.com",
           "name": "John"
        }
    ],...
]

Обратите внимание, что один объект может появляться несколько раз (до 3) в РАЗРЕШЕНИИ, но две разные перестановки не могут иметь в себе одни и те же элементы (положение элементов не имеет значения). Я пытался решить эту проблему с помощью пузырьковой сортировки и других алгоритмов сортировки, но пока безуспешно. Если у вас есть идеи, как это сделать, пожалуйста, дайте мне знать.

1 Ответ

0 голосов
/ 11 июля 2019

Итак, я решил эту проблему, используя пакет npm: https://www.npmjs.com/package/js-combinatorics (js-combinatorics), и я использовал bigCombination.Я знаю, что это не лучшее решение, но оно прекрасно работает.

...