JavaScript 如何筛选出数组中的非唯一值
在JavaScript中,数组是使用索引作为值的键的对象。在本文中,让我们看看如何筛选出所有的非唯一值,并返回所有唯一且不重复的元素。
以下是筛选出数组中非唯一值的几种方式:
- 使用 filter() 方法
- 使用 for 循环
方法1:使用 filter() 方法
filter() 方法返回满足唯一元素首次出现索引和最后一次出现索引相同条件的元素数组。我们使用 indexOf() 方法获取元素首次出现的索引,使用 lastIndexOf() 方法获取元素最后一次出现的索引。
语法:
let newarr=initial_arr.filter((value ,index)=>{
conditions with return statement;
});
示例: 在这个例子中,我们将使用filter()和indexOf() 方法来使用JavaScript过滤掉数组中非唯一的值。
let array = [1, 2, 2, 3, 4,
5, 6, 6, 7, 8, 8, 8];
console.log(
"Before filtering non unique values: "
+ array);
let unique =
array.filter((value, index) => {
return array.indexOf(value) === array.lastIndexOf(value);
});
console.log(
"After filtering non unique values: "
+ unique);
输出
Before filtering non unique values: 1,2,2,3,4,5,6,6,7,8,8,8
After filtering non unique values: 1,3,4,5,7
方法2:使用for循环
在for循环中,只有当第一次出现的索引和最后一次出现的索引相同时,我们才将唯一的元素推入数组中。我们使用 indexOf() 方法获取元素的第一次出现索引,使用 lastIndexOf() 方法获取元素的最后一次出现索引。
语法:
for (let i = start; condition to i;increment or decrement) {
instruction1;
instruction2;
instruction3;
.
.
};
示例: 在这个例子中,我们将使用JavaScript的for循环来过滤出一个数组中的非唯一值。
const array = [1, 2, 2, 3, 4,
5, 6, 6, 7, 8,
8, 8];
console.log(
"Before filtering non unique values: "
+ array);
let 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 non unique values: "
+ unique);
输出
Before filtering non unique values: 1,2,2,3,4,5,6,6,7,8,8,8
After filtering non unique values: 1,3,4,5,7