JS从数组中删除没有高阶函数的重复项



我知道这是一个愚蠢的问题,但我现在只学习了 3 个月编程。

如果您不能使用高阶函数和内置方法(如 filter 或 indexOf(,您将如何解决这个问题?

创建一个函数,该函数采用数字列表并返回一个新列表,其中删除了所有重复值

到目前为止,我得到了这个,但我认为这是一个死胡同......

const array = [1, 2, 3, 3, 1];
const removeDuplicate = () => {
let shortArray = [];
let index = 0;
for (let i = 0; i < array.length; i++) {
for (let j = 0; j < array.length; j++) {
if (i != j) {
if (array[i] == array[j]) {
shortArray[index] += array[i]
console.log(array[i]);
}
}
}
}
return shortArray;
}
console.log(removeDuplicate());

返回这个:

1
3
3
1
[ NaN ]

谢谢!

使用对象作为帮助程序。如果帮助程序中出现某个值,则该值不是唯一的,可以忽略。如果它不在帮助程序中,它是唯一的,请将其推送到结果数组中,并将其添加到帮助程序对象中。

const array = [1, 2, 3, 3, 1];
const removeDuplicate = (arr) => {
const helperMap = {};
const result = [];
for (let i = 0; i < arr.length; i++) {
const item = arr[i];
if (!helperMap[item]) {
result[result.length] = item;
helperMap[item] = true;
}
}
return result;
};
console.log(removeDuplicate(array));

function unique(arr) {
var obj = {};
for (var i = 0; i < arr.length; i++) {
var value = arr[i];
obj[value] = true; // set as key
}
return Object.keys(obj); //return all keys
}

使用以下函数:

function RemoveDuplicate(array){
let shortArray = [];
let index = 0;
for (let i = 0; i < array.length; i++) {
let exist=false;
for(let j=0;j<shortArray.length;j++){
if(array[i]==shortArray[j]){
exist=true;
break;
}
}
if(!exist){
shortArray[shortArray.length]=array[i];
}
}
return shortArray;
}

最新更新