javascript - 打印数组中字符串对的所有可能组合

标签 javascript arrays

我偶然发现了一个涵盖 Big O 的免费 CodeAcademy 类(class),直到我遇到一个特定问题为止。这看起来很简单,但我不知道为什么我遇到这么困难。

var people = ["Alice", "Bob", "Carol", "Dave", "Ed", "Mark", "Tom", "Lisa", "Sarah"];

任何人都可以提供一些关于我如何打印出该数组中所有可能的配对组合的见解吗?例如,它应该打印如下

Alice, Bob
Dave, Mark
Ed, Lisa

此外,它还表示任何对都不应该与自身配对,或者重复已经存在的对。例如,如果我们已经有“Ed,Lisa”,则它永远不应该打印“Lisa,Ed”。

我开始了两个 for 循环,然后合法地不知道从哪里开始,令人沮丧!

var people = ["Alice", "Bob", "Carol", "Dave", "Ed", "Mark", "Tom", "Lisa", "Sarah"];

for(var i = 0; i < people.length; i++){

   for(j = 0; j < people.length; j++) {
       // some fancy stuff here
    }
}

解决方案实际上并不需要使用 Javascript(但会很好),也许 PHP 或 Java 也可以。

最佳答案

您可以使用 2 个 for 循环来获取所有组合。想法是通过迭代列表来修复每对中的第一个元素并更改第二个元素。现在的问题是第二个循环应该从哪里开始迭代?

我们不需要一对具有相同元素的元素,因此这里i 不能与 j (i!=j) 相同并且我们不需要一对(B, A)(A,B) 已在列表中。因此,从 i+1 开始对内部循环进行迭代,确保如果已经打印了 (A, B)

var people = ["Alice", "Bob", "Carol", "Dave", "Ed", "Mark", "Tom", "Lisa", "Sarah"];

var total_people = people.length;
for(var i=0;i<total_people;i++)
{
    for(var j=i+1;j<total_people;j++)
    {
        document.write(people[i]+" , "+people[j]+"<br>");
    }
}

关于javascript - 打印数组中字符串对的所有可能组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44343878/

相关文章:

javascript - 在 jQuery 中将对象传递给 .attr()

javascript - 当第一个 div 的样式 = 100% 时隐藏 div 并显示另一个

php - "Notice: Undefined variable"、 "Notice: Undefined index"、 "Warning: Undefined array key"和 "Notice: Undefined offset"使用 PHP

javascript - 508 合规性和 javascript

javascript - 向 API-PUT 提交页面

Javascript: sort() 二维数组

javascript - 将连续数字分组为 JavaScript 数组中的 "from~to"字符串

android - 对数组使用共享首选项

c - 为什么我的数组打印不正确?

javascript - 如何检查数组是否是 Javascript 中的空数组的数组