JSON 对象中的排列
Permutations in JSON object
所以我想输入一部分代码(在 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"
}
],...
]
请注意,一个对象可以在一个 PERMUTATION 中出现多次(最多 3 次),但是两个不同的排列不能包含完全相同的元素(元素的位置无关紧要)。我试图用冒泡排序和其他不同的排序算法来解决这个问题,但到目前为止没有成功。如果您对如何实现这一点有任何想法,请告诉我。
所以我通过使用这个 npm 包解决了这个问题:https://www.npmjs.com/package/js-combinatorics (js-combinatorics),并且我使用了 bigCombination。我知道这不是最好的解决方案,但效果很好。
所以我想输入一部分代码(在 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"
}
],...
]
请注意,一个对象可以在一个 PERMUTATION 中出现多次(最多 3 次),但是两个不同的排列不能包含完全相同的元素(元素的位置无关紧要)。我试图用冒泡排序和其他不同的排序算法来解决这个问题,但到目前为止没有成功。如果您对如何实现这一点有任何想法,请告诉我。
所以我通过使用这个 npm 包解决了这个问题:https://www.npmjs.com/package/js-combinatorics (js-combinatorics),并且我使用了 bigCombination。我知道这不是最好的解决方案,但效果很好。