首页 > 解决方案 > 如何检查字符串数组中的重复元素

问题描述

我目前正在使用SwiftUI.

如果我运行下面的代码,显示结果将是A,但我想让它成为显示结果B

这可以实现什么样的代码?

在此处输入图像描述


这是代码:

struct TestView:View {

    let fruits = ["apple","apple","apple","orange","orange","banana"]

    @State var tmpFruits = [""]

    var body: some View{

        List(fruits, id: \.self){fruit in
            if tmpFruits.contains(fruit) == false{

                Button(action: {
                }, label: {
                    Text(fruit)
                })
                .onAppear(){
                    tmpFruits.append(fruit)
                }
            }
        }
    }
}

斯威夫特 5.0

SwiftUI 2.0

标签: arraysswiftswiftui

解决方案


您需要List具有唯一且恒定的 ID。目前,ID 是fruits. 问题是因为有重复的项目,你违反了唯一 ID 规则。

解决此问题的一种方法是fruits首先过滤,因此使用唯一 ID。它还极大地简化了视图代码。

这使用来自apple/swift-algorithms的Unique用于. 记得要。.uniqued()import Algorithms

代码:

import Algorithms

struct TestView: View {
    private let fruits = ["apple", "apple", "apple", "orange", "orange", "banana"]

    var body: some View {
        List(Array(fruits.uniqued()), id: \.self) { fruit in
            Button(fruit) {
                print("action")
            }
        }
    }
}

推荐阅读