首页 >web前端 >js教程 >如何高效地查找并返回 JavaScript 数组中的唯一值?

如何高效地查找并返回 JavaScript 数组中的唯一值?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-12-28 10:24:10958浏览

How to Efficiently Find and Return Unique Values in a JavaScript Array?

在 JavaScript 数组中查找唯一值

在 JavaScript 中处理数组时,通常需要删除重复值以确保唯一性。这是 JavaScript 数组遇到的一个常见问题:

var numbers = [1, 2, 3, 4, 5, 1, 2];
numbers.getUnique(); // [1, 2, 3, 4, 5] (incorrectly includes 1 and 2)

提供的原型方法 Array.prototype.getUnique 尝试过滤掉重复项,但在遇到零值时失败。

To了解问题后,让我们检查一下代码:

Array.prototype.getUnique = function() {
  var o = {}, a = [], i, e;
  for (i = 0; e = this[i]; i++) {o[e] = 1};
  for (e in o) {a.push (e)};
  return a;
};

问题出在用于跟踪唯一值的对象 o 上。当将数字插入 o 时,它会转换为字符串。但是,对于零,此转换会产生空字符串 ''。

因此,当第二个循环迭代 o 时,它会遇到空字符串作为键并将其添加到 a 数组中。这会导致错误地包含重复值。

唯一值的正确解决方案

要准确地从数组中获取唯一值,请考虑使用以下 ES6 解决方案过滤方法:

function onlyUnique(value, index, array) {
  return array.indexOf(value) === index;
}

// usage example:
var numbers = [1, 2, 3, 4, 5, 1, 2];
var unique = numbers.filter(onlyUnique);

console.log(unique); // [1, 2, 3, 4, 5]

该函数将数组中每个值的索引与当前索引进行比较。如果索引匹配,则意味着该值是唯一的并且包含在过滤后的数组中。通过这种方法,所有重复值都被有效删除。

以上是如何高效地查找并返回 JavaScript 数组中的唯一值?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn