尝试打印出任何重复的值。在可视化我需要做的事情上有问题。这不管用。
这不同于任何其他类似的问题,因为我希望打印所有重复的值,而不仅仅是有重复的值。
您还能给出结果的时间/空间复杂度吗?
这应该打印出2,2,4,4,7,7
const printDuplicates = (arr) => {
let newArray = [];
for (let i = 0; i < arr.length; i++) {
if (arr[i] === arr[i] + 1) {
newArray.push(arr[i]);
}
}
return newArray
}
console.log(printDuplicates([1, 2, 2, 4, 4, 5, 6, 7, 7, 8, 9]));
顺便说一句,我很感谢大家的帮助
发布于 2019-03-13 03:32:32
试试这个:
let arr = [1, 2, 2, 4, 4, 5, 6, 7, 7, 8, 9];
result = arr.filter(x => arr.filter(y => y == x).length > 1)
console.log(result);
filter
函数接受一个函数作为参数。此函数将数组中的每个元素作为参数,并应返回一个布尔值,指示该元素是否应包含在结果数组中。
因此,我们使用一个函数来计算该元素在数组中的出现次数,如果该元素多次出现,则返回true,否则返回false。
此发生计数器也是使用filter
函数编写的。
更新:
这部分只是一个统计arr
中x
元素出现次数的函数
arr.filter(y => y == x).length
因此,我们在filter函数中使用它来决定是否要保留一个元素(如果它多次出现,则保留它)。为了保留一个元素,我们应该在filter函数中为它返回true。
发布于 2019-03-13 03:36:03
这里有一种方法-尽管我必须承认它不是最优雅的,但最容易理解的:
const printDuplicates = (arr) => {
let newArray = [];
let valToCompare;
for (let i = 0; i < arr.length; i++) {
valToCompare = arr[i];
for (let j = 0; j < arr.length; j++) {
if (i != j && arr[j] == valToCompare) {
newArray.push(arr[j]);
}
}
}
return newArray;
}
console.log(printDuplicates([1, 2, 2, 4, 4, 5, 6, 7, 7, 8, 9]));
发布于 2019-03-13 03:39:38
如果重复项是相邻的,并且您希望显示它们(包括重复项)。
const printDuplicates = (arr) => arr.filter((_,indx) => arr[indx] === arr[indx+1] || arr[indx] === arr[indx-1]);
console.log(printDuplicates([1, 2, 2, 4, 4, 5, 6, 7, 7, 8, 9]));
https://stackoverflow.com/questions/55129324
复制相似问题