繁体   English   中英

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

[英]JS delete duplicated items from array without higher order functions

我知道这是一个愚蠢的问题,但我现在只学习编程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;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM