打印数组

时间:2017-06-03 12:21:30

标签: javascript arrays

我偶然发现了一个涵盖Big O的免费CodeAcademy课程,并且在我遇到一个特定问题之前就已经过去了。这看起来很简单,但我不知道为什么我这么艰难。

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

任何人都可以提供一些见解,我将如何打印出这个数组中所有可能的对组合?例如,它应该打印出像

Alice, Bob
Dave, Mark
Ed, Lisa

此外,它说没有一对应该与自己配对,或重复已经存在的配对。例如,如果我们已经拥有了#Ed; Lisa",那就永远不应该打印出#34; 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也可以使用。

1 个答案:

答案 0 :(得分:5)

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

我们不需要具有相同元素的对,因此i can't be same as j (i!=j)我们不需要(B,A) (A,B)对已经在列表中。因此,开始对来自i+1的内部循环进行迭代,以确保如果已经打印(B,A)则不会打印(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>");
    }
}