过滤后端返回的数组每条连续重复一遍问题

刚碰到问题以及解决办法的思路:
后端返回的数组变成类似[{1,1},{1,1},{2,2},{2,2},{3,3},{3,3}.....] 每条数据后面都跟前面一条一模一样。
现在我们要过滤掉每重复的数据只留一条。结果:[{1,1},{2,2},{3,3}....]

$scope.filterRepeatArray = function(datas){
        var data = [];
        //过滤重复数组
        if(datas[0]){
            data.push(datas[0]);
        }
        for (var i = 1; i < datas.length; i++) {
            var indexs = i-1;
            if(datas[i].attendanceDate != datas[indexs].attendanceDate){
            data.push(datas[i]);
            }
        }
        return $scope.changeRefresh(data);
    }

datas参数是传进来有问题的数组。前提我们要先判断这个数据是否有值,然后才进这个方法。我们默认把第一个数组push到空的新数组中,然后再通过for遍历,定义初始遍历开始的下标是1。
然后再判断当前遍历的下标对象跟前一个下标数组对象比较里面的值是否相等,如果不相等说明是没重复的。然后继续push到新数组中。
在这里有个要注意的地方:相比较的两个数组一定是当前遍历的下标对象跟之前的下标对象(i-1)。不能跟后面一个(i+1)下标对象对比。因为后面一个我们不能确定是否还有数据,数组也不允许我们提前比较还没遍历到的下标对象。

这样做可能有些硬编码。主要记住一点:当前遍历的下标只能跟已遍历过的比较。这样就算不是连续重复的,这要把当前遍历的下标对象跟新数组for遍历的每个对象比较就可以解决了。

如果有更好的解决办法欢迎共享。

### 回答1: 可以使用Python提供的set()函数过滤二维数组中的重复元素。例如:arr = [[1,2,3], [4,5,6], [2,3,4]],可以使用set()函数过滤重复元素,代码如下:result = list(set(map(tuple, arr))),result的值为[(1, 2, 3), (4, 5, 6)]。 ### 回答2: 在Python中,可以使用set函数过滤二维数组重复元素。 首先,将二维数组转换为一维数组,可以使用嵌套循环将二维数组的元素逐个添加到一维数组。 然后,使用set函数将一维数组转换为集合,集合的特点是不允许重复元素存在。 最后,将集合转换为列表,即可得到去除重复元素的二维数组。 下面是用Python实现该功能的示例代码: ``` def filter_duplicates(arr): temp = [] # 将二维数组转换为一维数组 for sublist in arr: for item in sublist: temp.append(item) # 使用set函数过滤重复元素 unique_set = set(temp) # 将集合转换为列表 result = list(unique_set) return result # 示例二维数组 array = [[1, 2, 3], [4, 5, 6], [1, 2, 3]] # 调用函数进行过滤 filtered_array = filter_duplicates(array) # 输出结果 print(filtered_array) ``` 此代码将输出`[1, 2, 3, 4, 5, 6]`,即已成功过滤掉了二维数组中的重复元素。 ### 回答3: 通过使用Python,在二维数组过滤重复元素的方法有很多。下面是一个简单的方法: 首先,我们可以使用嵌套循环来遍历二维数组中的每个元素。对于每个元素,我们将其与其他元素进行比较,如果找到重复的元素,则将其删除。 以下是实现此过程的一个示例代码: ``` def remove_duplicates(arr): result = [] # 用于存储结果的空列表 for sublist in arr: temp = [] # 用于存储当前子列表中的非重复元素的临时列表 for element in sublist: if element not in temp: temp.append(element) result.append(temp) return result # 示例二维数组 array = [[1, 2, 3], [2, 3, 4, 4], [5, 6, 6, 7, 7]] # 调用函数过滤重复元素 filtered_array = remove_duplicates(array) # 打印过滤后的结果 print(filtered_array) ``` 运行以上代码,将得到以下输出: ``` [[1, 2, 3], [2, 3, 4], [5, 6, 7]] ``` 这段代码将二维数组中的重复元素过滤掉,并返回一个包含所有非重复元素的二维列表。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值