我在尝试获取一组对象以不同顺序显示时遇到问题。我们应该让输出的显示名称按索引,名字,姓氏和年龄进行排序。当我运行代码时,我只会看到一次显示名称。我已经附上了欲望输出的图片,我有些困惑和受阻。这是我到目前为止的内容:
class Names {
constructor(first, last, age) {
this.first = first;
this.last = last;
this.age = age;
}
}
function printObject(allNames, sortType, message) {
if (sortType == "first") {
allNames.sort(function(a, b) {
return a.first.localeCompare(b.first);
});
}
if (sortType == "last") {
allNames.sort(function(a, b) {
return a.last.localeCompare(b.last);
});
}
if (sortType == "age") {
allNames.sort(function(a, b) {
return a.age - b.age;
});
}
for (let i = 0; i < allNames.length; i++) {
console.log(message);
console.log(allNames[i].first + " " + allNames[i].last + " " + allNames[i].age);
}
}
// main fucntion
function main() {
var allNames = [];
allNames.push(new Names("John", "Doe", 40));
allNames.push(new Names("Jay", "Thrift", 30));
allNames.push(new Names("Card", "Ace", 20));
printObject(allNames, "age", "Message");
}
main();
您是否只是为了获得所有不同的排序而错过了这些行?
printObject(allNames, "first", "By first name");
printObject(allNames, "last", "By last name");
printObject(allNames, null, "By index");
跟随printObject(allNames, "age", "Message");
吗?
((我将更改为printObject(allNames, "age", "By age");
)
您需要移动
console.log(message);
循环外。
class Names {
constructor(first, last, age) {
this.first = first;
this.last = last;
this.age = age;
}
}
function printObject(allNames, sortType, message) {
if (sortType == "first") {
allNames.sort(function(a, b) {
return a.first.localeCompare(b.first);
});
}
if (sortType == "last") {
allNames.sort(function(a, b) {
return a.last.localeCompare(b.last);
});
}
if (sortType == "age") {
allNames.sort(function(a, b) {
return a.age - b.age;
});
}
console.log(message);
for (let i = 0; i < allNames.length; i++) {
console.log(allNames[i].first + " " + allNames[i].last + " " + allNames[i].age);
}
}
// main fucntion
function main() {
var allNames = [];
allNames.push(new Names("John", "Doe", 40));
allNames.push(new Names("Jay", "Thrift", 30));
allNames.push(new Names("Card", "Ace", 20));
printObject(allNames, "age", "Message");
}
main();