JavaScript 从数组中获取所有非唯一值
给定一个 JavaScript 数组,任务是找到数组中的所有非唯一元素。以下是从数组中获取所有非唯一值的几个示例。
以下是从数组中获取所有非唯一值的方法:
- 使用 Array Slice() 方法
- 使用 for 循环
- 使用 filter() 方法
方法1:使用 Array Slice() 方法
该方法返回一个新的数组对象,其中包含所选元素。此方法从指定的 start 参数开始获取元素,直到不包括给定的 end 参数。
语法:
array.slice(start, end)
参数:
- start:这个参数是可选的。它指定了从哪个整数开始选择(索引从0开始)。负数用于从数组结尾选择。如果不使用,则起作用相当于”0″。
- end:这个参数是可选的。它指定从哪个整数结束选择。如果不使用,则从开始到数组末尾的所有元素都会被选择。负数用于从数组结尾选择。
示例:
这个示例首先对数组进行排序,然后逐个选择非唯一元素。
let arr = [89, 89, 11, 2, 3, 4, 2, 4, 5, 7];
let sort_arr = arr.slice().sort();
let res = [];
function gfg_Run() {
for (let i = 0; i < sort_arr.length - 1; i++) {
if (sort_arr[i + 1] == sort_arr[i]) {
res.push(sort_arr[i]);
}
}
console.log("Non Unique values are: " + res);
}
gfg_Run();
输出
Non Unique values are: 2,4,89
方法2:使用for循环
在这种方法中,先创建一个字典,并存储每个元素的频率。然后,如果它们的频率大于1,则选择该元素。
示例:
let arr = [89, 89, 11, 2, 3, 4, 2, 4, 5, 7];
function gfg_Run() {
let len = arr.length,
output = [],
count = {};
for (let i = 0; i < len; i++) {
let item = arr[i];
count[item] = count[item] >= 1 ? count[item] + 1 : 1;
if (count[item] === 2) {
output.push(item);
}
}
console.log("Non Unique Values: " + output);
}
gfg_Run();
输出
Non Unique Values: 89,2,4
方法3:使用filter()方法
示例: 这个示例使用filter方法,它检查元素的索引是否变化,并返回元素。
let arr = [89, 89, 11, 2, 3, 4, 2, 4, 5, 7];
function gfg_Run() {
let output = arr.filter(
(item, index) => arr.indexOf(item) !== index);
console.log("Non-Unique values are = " + output);
}
gfg_Run();
输出
Non-Unique values are = 89,2,4