Как получить 4-е значение из массива swift - PullRequest
0 голосов
/ 03 апреля 2019

Я пытаюсь получить 4-й предмет из массивов. Эти данные приведены ниже массива:

let mainArray = ["1", "2", "3", "7", "10", "4", "5", "6", "9", "12", "16", "11", "13", "14", "15"]
let valueCheck = "3"

//check value present or not in array

if mainArray.contains(valueCheck){

    //if yes print next value from match value
    Let valuePresent = self.mainArray.index(after: Int(valueCheck)!)
    print(valuePresent)
}

output = "4"

но я хочу "7"

Когда я пытаюсь выполнить приведенный выше код для получения 4-го значения, они дают мне 4-й индекс, но я хочу 4-е значение индекса.

Может кто-нибудь объяснить мне, как решить эту проблему, я пытался решить эту проблему, но пока нет результатов.

Любая помощь будет принята с благодарностью.

Заранее спасибо.

Ответы [ 5 ]

2 голосов
/ 03 апреля 2019
let mainArray = ["1", "2", "3", "7", "10", "4", "5", "6", "9", "12", "16", "11", "13", "14", "15"]
let valueCheck = "3" // index for this is 2

//check value present or not in array
if let index = mainArray.firstIndex(of: valueCheck){
    let value = mainArray[index + 1]
    print(value)
}

Хотя это будет работать, если, например, вы хотите, чтобы элемент после «15», valueCheck = "15", это приведет к сбою.

Вы можете предотвратить это, расширив коллекцию с помощью:

extension Collection {

    subscript(safe index: Index) -> Element? {
        return return index < endIndex && index >= startIndex ? self[index] : nil
    }
}

А затем обновите ваш код:

let mainArray = ["1", "2", "3", "7", "10", "4", "5", "6", "9", "12", "16", "11", "13", "14", "15"]
let valueCheck = "3" // index for this is 2

//check value present or not in array
if let index = mainArray.firstIndex(of: valueCheck){
    let value = mainArray[safe: index + 1]
    print(value)
}
0 голосов
/ 03 апреля 2019

let mainArray = ["1", "2", "3", "7", "10", "4", "5", "6", "9", "12", "16", "11", "13", "14", "15"]

, если mainArray.indices.contains (3) {let value = mainArray [3] print (value)}

Этот код поможет вам.

0 голосов
/ 03 апреля 2019
let mainArray = ["1", "2", "3", "7", "10", "4", "5", "6", "9", "12", "16", "11", "13", "14", "15"]
let valueCheck = "3"

//check value present or not in array

if mainArray.contains(valueCheck){

    //if yes print next value from match value
    let checkedValueindex = mainArray.firstIndex(of: valueCheck)
    let valuePresentIndex = mainArray.index(after: checkedValueindex!)
    print(mainArray[valuePresentIndex])
}
0 голосов
/ 03 апреля 2019

Вы должны установить индекс третьего элемента, и это "7" потому что массив начинается с индекса ноль

let mainArray = ["1", "2", "3", "7", "10", "4", "5", "6", "9", "12", "16", "11", "13", "14", "15"]
let valueCheck = "7" // index for this is 3

//check value present or not in array

if mainArray.contains(valueCheck){

//if yes print next value from match value
Let valuePresent = self.mainArray.index(after: Int(valueCheck)!)

let output = mainArray[valuePresent]
print(output) // the output will be 10

}
0 голосов
/ 03 апреля 2019

Сначала вы должны проверить, не выходит ли индекс за границы, затем вы можете получить значение через массив Subscript, как показано ниже

let mainArray = ["1", "2", "3", "7", "10", "4", "5", "6", "9", "12", "16", "11", "13", "14", "15"]
let valueCheck = "3"

if let index = Int(valueCheck) {
if mainArray.count > index {
     let result = mainArray[index]
 }
}

Надеюсь, это поможет вам.

...