对象如何删除重复项?

时间:2018-03-22 12:17:11

标签: javascript

我是面向对象编码的新手。练习时我发现了这个例子。

令人困惑;每当我们将数组传递给函数时,它就会删除重复项。

我想知道重复的值在哪里,它们如何消失以及它如何对数组进行排序?

任何人都可以深入解释我。我是面向对象概念的新手。



function duplicate(arr) {
  var i, len = arr.length,
    obj = {};
  for (i = 0; i < len; i += 1) {
    obj[arr[i]] = 0;
  }
  return obj;
}
//calling function
console.log(
  duplicate([1, 2, 3, 4, 4, 3, 2, 1, 0, -1, 10, 100])
);

// result::{0: 0, 1: 0, 2: 0, 3: 0, 4: 0, 10: 0, 100: 0, -1: 0}
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:0)

这是一种非常奇怪的方式,但我已经对代码进行了评论,以便更容易理解。

function duplicate(arr) {
  // declare variables 
  var i, len = arr.length,
    obj = {};

  // for each item in the array
  for (i = 0; i < len; i += 1) {
    // create or set key within obj named the current array item with the value 0
    obj[arr[i]] = 0;
  }

  // return the created object
  return obj;
}
//calling function and passing the array
console.log(duplicate([1, 2, 3, 4, 4, 3, 2, 1, 0, -1, 10, 100]))

这是有效的,因为当设置密钥时它是唯一的,因此再次调用将编辑现有条目而不添加另一条。

使这更好的一种快速方法是仅返回对象键而不是整个对象。您可以将return obj;更改为return Object.keys(obj);

来执行此操作