Javascript 我需要对用户输入名称的数组顺序进行排序

Javascript 我需要对用户输入名称的数组顺序进行排序,javascript,arrays,sorting,Javascript,Arrays,Sorting,它应该对数组进行排序,从数组中删除重复的名称,并在正确的文本区域中显示名称。输出:没有任何重复名称的字母顺序名称列表 函数过程(){ var输出=”; var inputlistNames=(document.getElementById('input').value); var list=inputlistNames.split('\n'); var arr=inputlistNames.split('\n'); var列表=新阵列(arr); list.sort(); var listN=

它应该对数组进行排序,从数组中删除重复的名称,并在正确的文本区域中显示名称。输出:没有任何重复名称的字母顺序名称列表

函数过程(){
var输出=”;
var inputlistNames=(document.getElementById('input').value);
var list=inputlistNames.split('\n');
var arr=inputlistNames.split('\n');
var列表=新阵列(arr);
list.sort();
var listN=新数组(使用过滤器(列表)移除的复制);
outputDiv=listN;
document.getElementById('output')。innerHTML=outputDiv;
}

使用过滤器(列表)移除的函数复制{ var unique_数组=[]; 对于(变量i=0;i
姓名列表
删除重复项

您可以使用一个映射,它是防类型的,可以防止使用数组#indexOf反复迭代


您可以使用一个映射,它是防类型的,可以防止使用数组#indexOf反复迭代

这应该行得通

这应该行得通

试试这个:

const单词=[
“创世记”,
“创世记”,
“鲁本”,
“阿德琳”,
“鲁本”,
“阿德琳”,
“福斯托”,
“劳伦”,
“齐克”,
“萨曼莎”,
“萨曼莎”,
“创世记”
];
const sorted=Object.keys(words.reduce)(res,word)=>{
返回{…res,[word]:word}
}排序((a,b)=>a.localeCompare(b));
控制台日志(已排序)请尝试以下操作:

const单词=[
“创世记”,
“创世记”,
“鲁本”,
“阿德琳”,
“鲁本”,
“阿德琳”,
“福斯托”,
“劳伦”,
“齐克”,
“萨曼莎”,
“萨曼莎”,
“创世记”
];
const sorted=Object.keys(words.reduce)(res,word)=>{
返回{…res,[word]:word}
}排序((a,b)=>a.localeCompare(b));

控制台日志(已排序)函数removeDuplicateUsingFilter(list){var unique_array=[];list.forEach(函数(element){if(!in_array(element,unique_array)){unique_array.push(element);}};返回unique_array}函数removeDuplicateUsingFilter(list){var unique_array=[];list.forEach(函数(element){if(!in_array)}(element,unique_数组){unique_数组.push(element);}});返回unique_数组}谢谢!但我尝试过在我的代码中不排序。你可以提供更多关于你所看到的问题的上下文吗?我使用了你的函数,但我的程序在没有任何重复名称的情况下不会按字母顺序对名称进行排序。你能给我一个输入示例吗?我更新了我的答案以提供输入和输出示例。我不确定你到底是什么行为看到了,但是代码对我来说是预期的。谢谢!但是我试过了,它没有在我的代码中排序。你能提供更多关于你看到的问题的上下文吗?我使用了你的函数,但我的程序没有按字母顺序排序,没有任何重复的名称。你能给我一个示例输入吗?我更新了我的答案以提供示例输入和输出。我不确定您到底看到了什么行为,但代码对我来说是正常的。您的解决方案将排序复杂性从
O(n log n)
增加到
O(n^2)
您的解决方案将排序复杂性从
O(n log n)
增加到
O(n^2)
function removeDuplicateUsingFilter(list) {
   filtered = list.filter(function (a) {
     if (!this.has(a.toLowerCase())) {
        this.set(a, true);
        return true;
     }
   }, new Map);
  return filtered.sort()
}

a = ["genesis", "genesis", "ruben", "adeline", "ruben", "adeline", 
"fausto", "lauren", "zeke", "samantha", "Samantha", "Genesis"]

console.log(removeDuplicateUsingFilter(a))

//output: ["adeline", "fausto", "genesis", "lauren", "ruben", "samantha", "zeke"]
list.filter(
    (elem) => {
         return list.find(elem) === -1 ? true : false;
    }
)
.sort(
    (a,b) => {
         return a > b ? 1 : -1;
    }
);