Математические операции отдельных элементов в 2D Array - Swift - PullRequest
1 голос
/ 04 апреля 2019

Я пытаюсь выполнить различные математические операции над отдельными элементами двумерного массива (testArray) в сочетании с одномерным массивом (мод). У меня есть следующее для генерации отдельных переменных, но я не могу понять, как вернуть эти значения в новый 2D-массив. Swift 3.0.2.

let testArray: [[Double]] =
    [[0,100,20.1],
     [1,99,19.2],
     [3,98,18.2],
     [5,97,17.3],
     [7,96,16.4],
     [9,95,15.5]]

let mod: [Double] = [0,5,7,14,20,22]

//Math operations on the two above arrays
for var x in 0..<testArray.count {
    var result1 = Double(testArray[x][0])
    var result2 = Double(testArray[x][1] + mod[x])
    var result3 = Double(testArray[x][2] - mod[x])
    print(result1,result2,result3)
}

//output is as follows:
0.0 100.0 20.1
1.0 104.0 14.2
3.0 105.0 11.2
5.0 111.0 3.3
7.0 116.0 -3.6
9.0 117.0 -6.5

//how do I get the same numbers into a new 2D array as follows:
[[0.0,100.0,20.1],
 [1.0,104.0,14.2],
 [3.0,105.0,11.2],
 [5.0,111.0,3.3],
 [7.0,116.0,-3.6],
 [9.0,117.0,-6.5]]

Ответы [ 2 ]

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

Вы можете использовать map:

let result = testArray.indices.map { [ testArray[$0][0], testArray[$0][1] + mod[$0], testArray[$0][2] - mod[$0] ] }

В примечании, ваш блок for может быть записан как:

for x in testArray.indices {
    let result1 = testArray[x][0]
    let result2 = testArray[x][1] + mod[x]
    let result3 = testArray[x][2] - mod[x]
    print(result1,result2,result3)
}
0 голосов
/ 04 апреля 2019

Это может быть так просто, как это,

var anotherArray: [[Double]] = []
for x in 0..<testArray.count {
    let result1 = Double(testArray[x][0])
    let result2 = Double(testArray[x][1] + mod[x])
    let result3 = Double(testArray[x][2] - mod[x])
    anotherArray.append([result1, result2, result3])
}
print(anotherArray)
...