node.js - JSON对象中的排列
问题描述
所以我想输入一段代码(在 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 次),但两个不同的排列中不能有完全相同的元素(元素的位置无关紧要)。我试图用冒泡排序和其他不同的排序算法来解决这个问题,但到目前为止还没有成功。如果您对如何实现这一点有任何想法,请告诉我。
解决方案
所以我通过使用这个 npm 包解决了这个问题:https : //www.npmjs.com/package/js-combinatorics (js-combinatorics),我使用了 bigCombination。我知道这不是最好的解决方案,但它工作得很好。
推荐阅读
- 3d - 3d 数据的 2d 输出不是通过块号而是通过列的值
- powershell - 使用带有 CSV 的普通 For 循环 (Import-CSV)
- python - 需要根据父任务对任务进行排序
- node.js - 我可以使用 Nuxt.js 从数据库中渲染数据吗?
- pytorch - “沿暗淡指定的轴收集值”是什么意思?意思是?
- javascript - 我可以 json_encode 一个 PHP 数组并将值作为 JS RegExp 对象获取吗?
- acumatica - 是否有休息 api 来获取一段时间内的所有 Acumatica General Ledger 交易?还有一个获取已配置分支的列表吗?
- c# - 聊天机器人异常:OnTurnAsync 异常--操作返回无效状态代码“BadRequest”
- arrays - Ionic 4:helperService 中的“Typescript 错误”无法读取 HelperService 中未定义的属性“长度”
- git - 在 git pull 上保留已删除的文件