Swift: исключение указанного индекса c из массива при фильтрации - PullRequest
0 голосов
/ 29 января 2020

Я бы хотел отфильтровать массив чисел и использовать для них сокращение, но мне нужно исключить спецификацию c index, и я не могу разделить. Можно ли сделать это с помощью методов, которые являются частью Foundation в Swift?

Я пытался разбить массив на две части, используя prefix & suffix, но есть некоторые крайние случаи, когда он взрывается без исключения.

    while currentIndex < nums.count - 2 {
        for _ in nums {
            let prefix = nums.prefix(currentIndex)
            let suffix = nums.suffix(from: currentIndex + 1)
            if prefix.contains(0) || suffix.contains(0) {
                incrementIndex(andAppend: 0)
            }
            let product = Array(prefix + suffix).reduce(1, *)
            incrementIndex(andAppend: product)
        }
    }

Ответы [ 2 ]

2 голосов
/ 29 января 2020

Вы можете использовать enumerated() для преобразования последовательности (например, массивов) в последовательность кортежей с целочисленным счетчиком и элементом, спаренным вместе

var a = [1,2,3,4,5,6,7]
var c = 1
let value  = a.enumerated().reduce(1) { (_, arg1) -> Int in
    let (index, element) = arg1
    c = index != 2 ? c*element : c
    return c
}
print(value) // prints 1680 i.e. excluding index 2
1 голос
/ 29 января 2020

Я пытаюсь выяснить, как исключить специфику c index

Как насчет такого рода вещей?

var nums2 = nums
nums2.remove(at:[currentIndex])
let whatever = nums2.reduce // ...

Где remove(at:) определяется здесь: { ссылка }

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...