Ios 在2个数组中对元素进行乘法和加法

Ios 在2个数组中对元素进行乘法和加法,ios,swift,Ios,Swift,我有两个数组,分别是arrayA和arrayB。arrayA的元素是[1,2],arrayB的元素是[3,4]。现在我想把这些数组中的元素相乘相加,如下所示。。1x3+2x4=11。我怎样才能做到这一点…?试试这个 let A = [1,2] let B = [3,4] let C = zip(A, B).map {$0.0 * $0.1} print(C) // [3, 8] let sum = C.reduce(0, +) print(sum)//11 试试这个 let A = [

我有两个数组,分别是arrayA和arrayB。arrayA的元素是[1,2],arrayB的元素是[3,4]。现在我想把这些数组中的元素相乘相加,如下所示。。1x3+2x4=11。我怎样才能做到这一点…?

试试这个

let A = [1,2]
let B = [3,4]

let C = zip(A, B).map {$0.0 * $0.1}

print(C) // [3, 8]

let sum = C.reduce(0, +)

print(sum)//11
试试这个

let A = [1,2]
let B = [3,4]

let C = zip(A, B).map {$0.0 * $0.1}

print(C) // [3, 8]

let sum = C.reduce(0, +)

print(sum)//11

这里是zip、map和reduce的组合:

let result = (zip([1,2], [3,4]).map { $0.0 * $0.1 }).reduce(0, +)
print(result) // 11
基于两个数组生成一个对序列:1,3,2,4 使用map,我对数组的每个元素进行迭代,每次迭代生成一个新元素 $0表示当前迭代中序列的元素。由于元素是一对,因此我们可以使用$0.0访问该对的第一个子元素,使用$0.1访问第二个子元素。 最后,在映射之后,我们得到一个乘积数组,只需要将它减少到一个数字,用reduce将所有结果元素相加。 0,+表示reduce从0开始作为初始值,然后用缩写+我们可以累加所有元素的和。
这里是zip、map和reduce的组合:

let result = (zip([1,2], [3,4]).map { $0.0 * $0.1 }).reduce(0, +)
print(result) // 11
基于两个数组生成一个对序列:1,3,2,4 使用map,我对数组的每个元素进行迭代,每次迭代生成一个新元素 $0表示当前迭代中序列的元素。由于元素是一对,因此我们可以使用$0.0访问该对的第一个子元素,使用$0.1访问第二个子元素。 最后,在映射之后,我们得到一个乘积数组,只需要将它减少到一个数字,用reduce将所有结果元素相加。 0,+表示reduce从0开始作为初始值,然后用缩写+我们可以累加所有元素的和。
请注意,与分别使用链式映射和reduce进行乘法和求和不同,您可以直接对压缩序列应用reduce操作,并修改reduce闭包以相应地计算压缩序列中成对相乘对象的和:

let a = [1, 2]
let b = [3, 4]

let result = zip(a,b).reduce(0) { $0 + $1.0 * $1.1 } // 11

请注意,与分别使用链式映射和reduce进行乘法和求和不同,您可以直接对压缩序列应用reduce操作,并修改reduce闭包以相应地计算压缩序列中成对相乘对象的和:

let a = [1, 2]
let b = [3, 4]

let result = zip(a,b).reduce(0) { $0 + $1.0 * $1.1 } // 11

当我尝试像let c=zipsellingPriceArray这样的东西时,quantityArray.map{*}但是它在一元数之后给出了错误预期的表达式operator@v.bw-再试一次。当我尝试像let c=zipsellingPriceArray这样的东西时,quantityArray.map{*}但它给出了一元后的错误预期表达式operator@v.bw-请再试一次。谢谢@Andrea Mugnani。@Andrea Mugnani请您解释一下上述代码的工作原理。我的意思是0.1,0.0,reduce等代表什么…?非常感谢@Andrea Mugnani…:这很有帮助!zip是否只接受两个数组,而不是更多或更少?@v.bw zip接受两个数组,如果它们没有相同的维度,结果是一个维度为mina.count、b.count的序列@AndreaMugnanitHanks@Andrea Mugnani@Andrea Mugnani请您解释一下上述代码的工作原理。我的意思是0.1,0.0,reduce等代表什么…?非常感谢@Andrea Mugnani…:这很有帮助!zip是否只接受两个数组,而不是更多或更少?@v.bw zip接受两个数组,如果它们没有相同的维度,结果是一个维度为mina.count、b.count的序列@安德烈阿穆尼亚尼