我的目标是创建一部分代码,该部分代码将使用 JSON 文件中的数据生成所有可能的组合,而不会重复(具有相同元素的组合,无论其顺序是什么)。我的 JSON 文件如下所示:
[
{
"COLLECTION": "Assault",
"WEAPON": "SG 553",
"SKIN": "Tornado",
"GRADE": "Consumer Grade"
},
{
"COLLECTION": "Assault",
"WEAPON": "UMP-45",
"SKIN": "Caramel",
"GRADE": "Consumer Grade"
},
{
"COLLECTION": "Vertigo",
"WEAPON": "Five-SeveN",
"SKIN": "Candy Apple ",
"GRADE": "Industrial Grade"
}, ...
]
组合将通过以下方式生成:
[
"COMBINATION 1":[
{
"COLLECTION": "Assault",
"WEAPON": "SG 553",
"SKIN": "Tornado",
"GRADE": "Consumer Grade"
},
{
"COLLECTION": "Assault",
"WEAPON": "UMP-45",
"SKIN": "Caramel",
"GRADE": "Consumer Grade"
},
{
"COLLECTION": "Assault",
"WEAPON": "Five-SeveN",
"SKIN": "Candy Apple ",
"GRADE": "Industrial Grade"
}, ...
],
"COMBINATION 2":[
{
"COLLECTION": "Assault",
"WEAPON": "SG 553",
"SKIN": "Tornado",
"GRADE": "Consumer Grade"
},
{
"COLLECTION": "Aztec",
"WEAPON": "M4A4",
"SKIN": "Jungle Tiger",
"GRADE": "Industrial Grade"
},
{
"COLLECTION": "Aztec",
"WEAPON": "Tec-9",
"SKIN": "Ossified",
"GRADE": "Mil-Spec"
}, ...
],...
]
请注意,在这种情况下,两种组合具有相同的元素,因此不应重复标注。这意味着只要组合中存在与另一个可能组合相同的元素(无论它们的顺序如何),它就被视为一个组合(每个组合将有 10 个元素,并且根据“SKIN”属性值):
[
"COMBINATION 1":[
{
"COLLECTION": "Vertigo",
"WEAPON": "SG 553",
"SKIN": "Tornado",
"GRADE": "Consumer Grade"
},
{
"COLLECTION": "Assault",
"WEAPON": "UMP-45",
"SKIN": "Caramel",
"GRADE": "Consumer Grade"
},
{
"COLLECTION": "Assault",
"WEAPON": "Five-SeveN",
"SKIN": "Candy Apple ",
"GRADE": "Industrial Grade"
},...
],
"COMBINATION 2":[
{
"COLLECTION": "Assault",
"WEAPON": "Five-SeveN",
"SKIN": "Candy Apple ",
"GRADE": "Industrial Grade"
},
{
"COLLECTION": "Vertigo",
"WEAPON": "SG 553",
"SKIN": "Tornado",
"GRADE": "Consumer Grade"
},
{
"COLLECTION": "Assault",
"WEAPON": "UMP-45",
"SKIN": "Caramel",
"GRADE": "Consumer Grade"
},...
],...
另请注意,同一项目可以在组合中出现多次(最多 10 次),并且我正在处理包含大约 1500 个元素的 JSON 文件,因此效率是关键。总而言之,最终产品应该如下所示:https://textuploader.com/1du6o https://textuploader.com/1du6o
这也是一个类似的问题,但不太复杂:JavaScript 中的排列? https://stackoverflow.com/questions/9960908/permutations-in-javascript
我尝试用冒泡排序等方法来解决这个问题,但到目前为止还没有成功。如果您有任何想法如何实现这一点,我很想听听。