javascript - 我正在尝试删除重复项并返回结果。我缺少什么?

标签 javascript arraylist callback

callbackPractice uniq 应该返回一个数组到回调,其中所有重复项都被删除,但我丢失了一些东西。请帮忙。

function uniq(collection, fn) {
  var uniqCollection = collection.filter(function(item, index, self) {
    return self.indexOf(item) === index;
  });
}

function uniq(collection, fn) {
  var obj = {};
  var uniqArr = [];
  for (var key in obj) {
    uniqArr.push(key);
  }
  return fn(uniqArr);
}

var names = ['Tyler', 'Cahlan', 'Ryan', 'Colt', 'Tyler', 'Blaine', 'Cahlan'];
uniq(names, function(uniqArr) {
  console.log('The new names array with all the duplicate items removed is ', uniqArr);
});

最佳答案

将所有数组值放入一个对象中,然后列出所有键 - 这样就可以消除所有重复项:

function uniq(arr, cb){
    var obj = {};
    for (var i in arr) {
      var v = arr[i];
      obj[v] = true;
    }

    var uniqArr = Object.keys(obj);
    (cb || Function.prototype)(uniqArr);
}

关于javascript - 我正在尝试删除重复项并返回结果。我缺少什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35138904/

相关文章:

java - 将两个 Object[][] 附加在一起

java - 从 Java ArrayList 中删除项目时接收 IndexOutOfBoundsException

javascript - jQuery 选择器 .not() 不工作

javascript - 过渡 anchor 侧

javascript - Angular Promise 和两种方法

php - 如何更改动态生成的内容 Javascript 和 PHP 的可见性

java - ArrayList for 循环最有效的实现是什么?

javascript - 获取函数的回调以将值返回给父函数

iphone - CoreAudio Audio Graph 中的自定义音频效果 - 渲染回调

javascript - 如何在回调中访问正确的“this”?