Javascript/jQuery:如何从数组的项中获取排列
Javascript /jQuery : How to get permutations from items of an array?
如果我有一个包含项目的数组,例如
["To","Ti","Ta"]
我想要一个函数来返回数组中附加项的所有排列,这里的函数将返回:
[["ToTiTa"]["ToTaTi"]["TiToTa"]["TiTaTo"]["TaToTi"]["TaTiTo"]]
你能帮我吗?
您要查找的是排列。您可以使用递归函数创建它们。
下面的代码就是一个示例。permute
是前端函数,您的代码应该调用它。permute_rec
是构建排列阵列的递归函数,swap
只是交换阵列中元素的方便函数:
function swap(array, i, j) {
if (i != j) {
var swap = array[i];
array[i] = array[j];
array[j] = swap;
}
}
function permute_rec(res, str, array) {
if (array.length == 0) {
res.push(str);
} else {
for (var i = 0; i < array.length; i++) {
swap(array, 0, i);
permute_rec(res, str + array[0], array.slice(1));
swap(array, 0, i);
}
}
}
function permute(array) {
var res = [];
permute_rec(res, "", array);
return res;
}
console.log(permute(["A", "B", "C"]));
编辑:您可以使用以下代码扩展此代码以包括子阵列的排列:
function xpermute_rec(res, sub, array) {
if (array.length == 0) {
if (sub.length > 0) permute_rec(res, "", sub);
} else {
xpermute_rec(res, sub, array.slice(1));
xpermute_rec(res, sub.concat(array[0]), array.slice(1));
}
}
function xpermute(array) {
var res = [];
xpermute_rec(res, [], array);
return res;
}
console.log(xpermute(["A", "B", "C"]));
此代码创建所有子数组,然后使用原始代码创建排列。(跳过空数组的情况。)
相关文章:
- 使用 jQuery 的 .on 函数如何获取事件的原始元素
- jquery试图按名称获取按钮位置
- 如何在jQuery中获取元素的形式
- 如何在php文件中获取$.post-ajax传递的值
- 在Shopify中获取博客文章的图片
- 使用Javascript获取所选选项ID
- 在jQuery中获取表的行索引
- 使用jquery将mysql数据获取到新的表行中
- 如何删除多行HTML排列中的空白
- 在动态创建的元素上获取对特定选择器的引用
- 从城市名称获取惊喜
- Angular只从数组中获取所需的数据
- 无法将数据从firebase获取到我的html页面
- 从ajax请求中获取javascript对象
- 如何从画布上的某个移动事件中获取X和Y
- 如何使用排列运算符来获取具有命名参数的函数的所有参数
- Javascript/jQuery:如何从数组的项中获取排列
- 需要一个优化的解决方案来获取按字母顺序排列的记录集 javascript
- 如何编写递归函数来获取表示每个值排列集的数组
- 根据文本框中重新排列的无序列表获取值