JavaScript 改变行中的元素并在不同的行中打印它们

JavaScript Change elements in line and print them in different lines

我有这段代码可以找到匹配的名称并将它们更改为其他名称。 但是它们每次都在同一行中发生变化。

var names1 = ["Rui", "Jose", "Carlos", "Miguel"];

var names2 = ["Rui", "Tiago", "Jose", "Carlos", "Rogerio"];

for (var i = 0; i < names1.length; i++) {
  for (var j = 0; j < names2.length; j++) {

    if (names1[i] == names2[j]) {

      names2[j] = "Maria", "Fred";

    }

  }
}

console.log(names2);

我想知道如何在不同的行中打印它们。 因为它显示是这样的:

玛丽亚弗雷德

蒂亚戈

玛丽亚弗雷德

玛丽亚弗雷德

罗杰里奥

我想要:

玛丽亚,

弗雷德,

蒂亚戈,

罗杰里奥。

你能帮帮我吗?

而不是

console.log(names2)

试试这个

for (var i = 0; i < names2.length; i++) {
console.log(names2[i]);

}

试试这个:

var names1 = ["Rui", "Jose", "Carlos", "Miguel"];
var names2 = ["Rui", "Tiago", "Jose", "Carlos", "Rogerio"];
var matchFound = false;
for (var i = 0; i < names1.length; i++) {
  for (var j = 0; j < names2.length; j++) {
    if (names1[i] == names2[j] && matchFound === false) {
      // when the name matches, print Maria and Fred in 2 different lines
      console.log("Maria,");
      console.log("Fred,");
      matchFound  = true;
    } else { // if name doesn't match, just print the element from 2nd array
       console.log(names2[j]");
    }

  }
}

如果找到匹配的名称,您可以使用数组来交换名称,并使用索引插入更改后的名称。

var names1 = ["Rui", "Jose", "Carlos", "Miguel"],
    names2 = ["Rui", "Tiago", "Jose", "Carlos", "Rogerio"],
    matched = ["Maria", "Fred"],
    index = 0,
    i, j;

outer: for (j = 0; j < names2.length; j++) {
    for (i = 0; i < names1.length; i++) {
        if (names1[i] == names2[j]) {
            names2[j] = matched[index++];
            index %= matched.length;
            continue outer;
        }
    }
}

console.log(names2);

要加快检查速度,您可以使用哈希 table 并对照它进行检查。

var names1 = ["Rui", "Jose", "Carlos", "Miguel"],
    names2 = ["Rui", "Tiago", "Jose", "Carlos", "Rogerio"],
    matched = ["Maria", "Fred"],
    index = 0,
    hash = Object.create(null);

names1.forEach(function (a) {
    hash[a] = true;
});

names2.forEach(function (a, i, aa) {
    if (hash[a]) {
        aa[i] = matched[index++];
        index %= matched.length;
    }
});

console.log(names2);

在下面的例子中,我认为应该从一些来源中选择随机名称

var names1 = ["Rui", "Jose", "Carlos", "Miguel"];
var names2 = ["Rui", "Tiago", "Jose", "Carlos", "Rogerio"];
var random_names = ['Maria', 'Fred', 'Someother']
var random_names_counter = 0;
for (var i = 0; i < names1.length; i++) {
    for (var j = 0; j < names2.length; j++) {
        if (names1[i] == names2[j]) {
            names2[j] = random_names[random_names_counter++];
        }
    }
}

console.log(names2);