当前位置: 首页 > 知识库问答 >
问题:

在Swift 5.1中枚举期间从数组中移除元素而不反转[重复]

汪信鸥
2023-03-14

如果for-in循环在某个条件下失败,我希望移除该循环中的元素。目前,这里有一个解决方案,但它是旧的,似乎复杂的所有我正在努力做。

在Java中,我可以像这样引用索引:

/* Program that removes negative numbers from an array */
//Make an array list and add some numbers to it.
ArrayList<Int> a = new ArrayList<Int>;
for (int i = 0; i < 10; i++){
    a.add( (int) ((Math.random - 0.5) * 100) //Add 10 numbers that are pos/neg.

//Remove all the negative numbers.
for (int i = 0; i < a.size; i++){
    if (a.get(i) < 0){
        a.remove(i); //Removes the element. 
    }
}

但在Swift中,据我所知,我必须使用一个等效的for-each循环:

    var array = [-4, -2, 0, 4, 6, 7, 2, 5, 7]
    //Iterate looking for numbers < 0.
    for item in array{
        if (item < 0){
            array.removeAt(item) //ERROR 
        }
        else{
            //Right now, I just copy every value into a new array.
            //But I shouldn't even need this w/ the Arrays collection.
    }

我怎样才能做得更简单呢?对不起,我是这里的新手;谢谢你的帮助!

 

有人建议过滤器,这是一个恒星的反应,但不是我想要的。(我的错,对不起)。我用这个作为一个不同的挑战的例子,我正在这里学习Swift。

请帮助我寻找删除元素的解决方案。谢谢!!

共有1个答案

周涵畅
2023-03-14

使用removeAll(where:)方法,如下所示:

array.removeAll(where: { $0 < 0 })

或:

array.removeAll { $0 < 0 }
 类似资料:
  • 我创建了一个函数来删除数组中的一个特定元素,但正在努力解决的问题是,当我们从s.next()中获得要删除的元素的值时,它不是删除,而是当我们已经为它初始化了一个值时,它是删除 例如,我们有一个函数remove

  • 我有一个名为arr的数组,大小为1024。所以基本上我想删除数组的第1X个元素。我该怎么做?我是这么想的:创建一个指针,指向数组的第一个值(ARR[0])。执行指针算术将其带到数组的第X个元素。然后将arr[0]设置为指针p,这将有效地移除前X个元素?这样行吗?或者有没有更简单的方法来移除数组的前X个元素?

  • 我创建了一个函数来删除数组中的一个特定元素,但正在努力解决的问题是,当我们从s.next()中获得要删除的元素的值时,它不是删除,而是当我们已经为它初始化了一个值时,它是删除

  • 问题内容: 如今,在Swift中,您只需键入 以使数组唯一。(或根据需要订购)。 在此之前,它是怎么做的? 我可能有一个如下所示的数组: 或者,实际上,是数据的相似类型部分的任何序列。我要做的是确保每个相同元素中只有一个。例如,上面的数组将变为: 请注意,删除了2、6和15的重复项以确保每个相同元素中只有一个。Swift是否提供一种轻松实现此目的的方法,还是我必须自己做? 问题答案: 您可以自己滚

  • 从数组中移除给定函数返回 false 的元素。 使用 Array.filter() 和 Array.reduce() 来查找返回真值的数组元素,使用 Array.splice() 来移除元素。 func 有三个参数(value, index, array)。 const remove = (arr, func) => Array.isArray(arr) ? arr.filter(fu

  • 我试图从ArrayList中删除所有奇数元素,然后返回该ArrayList。 我在第一行发现一个指向列表整数的错误 测试: 结果: