Ruby:删除数组中重复值的所有实例

时间:2018-05-11 13:56:13

标签: arrays ruby duplicates

我有一个数组,我想删除该数组中重复值的所有实例。

arr = [1, 1, 2, 3, 4, 4, 5]

我想要预期的输出:

=> [2, 3, 5]

最好的方法是什么?

5 个答案:

答案 0 :(得分:4)

p arr.group_by(&:itself).reject{|k,v|v.count>1}.keys

输出

[2, 3, 5]

答案 1 :(得分:1)

有一个更简单的解决方案:

arr = [1, 2, 1, 3, 1, 4, 1, 5, 1, 6]

new_arr = arr - [1]

new_arr 返回 [2, 3, 4, 5, 6]

答案 2 :(得分:0)

enter image description here

+1 for:arr.uniq.select {| n | arr.count(n)== 1}似乎更具可读性和干净性

@ cary-swoveland数组#差异似乎有一些性能问题。

答案 3 :(得分:0)

#include <stdio.h>

int main()
{
    int arr[8];
    for(int i=0; i<8; i++)
    {
        printf("The number: " );
        scanf("%d", &arr[i]);
    }
    int size = sizeof(arr)/sizeof(int);
    printf("%d\n", size);
    return 0;
}

预期产量

arr = [1, 1, 2, 3, 4, 4, 5]
arr.reject{|x| arr.count(x)>1}

如果是多维的

=> [2, 3, 5]

答案 4 :(得分:-2)

https://apidock.com/ruby/Array/uniq

arr = [1, 1, 2, 3, 4, 4, 5]
arr.uniq 

返回

[1, 2, 3, 4, 5]