【发布时间】:2021-06-25 20:07:48
【问题描述】:
我在 JavaScript 中编写了一个代码来连接两个名称数组并将它们排序出来而不重复。当它显示在屏幕上时,我看不到新数组的第 0 项。我不知道为什么,在 console.log 中我看到项目 0 是“Alice”。但是,我在网页上实际看到的是 1. William、2. Beatrice、3. Charlie、4. Charlotte 等等。
let nameM = [
"William",
"Nathan",
"Raphael",
"Sam",
"Emile",
"Leo",
"Pascal",
"Felix"
];
let nameF = [
"Charlotte",
"Sam",
"Emma",
"Charlie",
"Emilie",
"Pascal",
"Lea",
"Beatrice",
"Alice"
];
let name, list;
name = [];
function newArray(nameM, nameF) {
nameM.concat(nameF).forEach(item => {
if (name.indexOf(item) === -1)
name.push(item);
});
return name;
}
console.log(newArray(nameM, nameF));
list = "<ol>";
name.forEach(firstName);
list += "</ol>";
document.getElementById("firstNames").innerHTML = list;
function firstName(values) {
name.sort();
list += "<li>" + values + "</li>";
}
【问题讨论】:
-
1) 似乎没有错误你也可以
concat然后像这样:const name = [...nameM, ...nameF]--- 简单干净! -
就像我在 console.log 中所说的,一切似乎都很好,在网页中,我在第一个位置和最后一个位置看到了“William”这个名字。
-
每次打印姓名时,您都会调用
sort()。不要那样做。致电sort()一次,然后再致电forEach。 -
@HereticMonkey 非常感谢!正是这个东西使数组的姓氏出现在另一个之上。再次感谢!
标签: javascript arrays list concatenation