JavaScript:如何从数组中过滤掉非唯一值?


数组是用于以结构化格式存储数据的数据结构。我们可以将数据存储在数组中,并使用其索引检索它们。这些索引充当这些值的键。

在本文中,我们将过滤掉非唯一值,并返回仅包含唯一非重复元素的数组。

方法

在一个包含唯一元素的数组中,我们将获取所有元素,然后将它们与之前的元素集合进行比较。如果任何元素已经存在,则表示它是重复元素,我们将将其从结果数组中删除。

在本文中,我们将使用filter() **方法**和forEach() **方法**来过滤掉非唯一值。

方法1 - 使用filter()方法

filter()方法返回满足单次出现条件的元素。我们将使用JavaScript提供的indexOf()功能来删除所有重复元素。

语法

var newArr=initialArr.filter((value ,index)=>{
   // conditions with return
});

示例1

在下面的示例中,我们将删除所有重复的数字

# index.html

<!DOCTYPE html>
<html>
<head>
   <title>Filtering the Non-unique characters</title>
</head>
<body>
   <h1 style="color: green;">
      Welcome To Tutorials Point
   </h1>
   <script>
      var array=[1, 1, 2, 3, 3, 5, 6, 7, 7, 7, 8, 9];
      console.log("Before filtering non unique values: " + array);
      var unique=array.filter((value, index) => {
         return array.indexOf(value) === array.lastIndexOf(value);
      });
      console.log("After filtering non unique values: " + unique);
   </script>
</body>
</html>

输出

成功执行上述程序后,浏览器将显示以下结果。

Welcome To Tutorials Point

并且在控制台中,您将找到结果,请参见下面的屏幕截图 -

方法2 - 使用for()循环

使用**for()**循环只会将唯一元素推入数组。我们将使用**indexOf()**方法来检查元素的第一次和最后一次出现是否相同。

示例2

在下面的示例中,我们将删除所有重复的数字

# index.html

<!DOCTYPE html>
<html>
<head>
   <title>Filtering the Non-unique characters</title>
</head>
<body>
   <h1 style="color: green;">
      Welcome To Tutorials Point
   </h1>
   <script>
      var array = [1, 1, 2, 3, 3, 5, 6, 7, 7, 7, 8, 9];
      console.log("Before filtering: " + array);
      var unique = [];
      for (let i = 0; i < array.length; i++) {
         if (array.lastIndexOf(array[i]) === array.indexOf(array[i])) {
            unique.push(array[i]);
         }
      }
      console.log("After filtering: " + unique);
   </script>
</body>
</html>

输出

更新于:2022年4月26日

1K+ 浏览量

启动您的职业生涯

通过完成课程获得认证

开始学习
广告
© . All rights reserved.