如何在 reduce 函数中填充新列表 - Kotlin

How to populate a new list inside reduce function - Kotlin

reduce函数是求Array/List

中元素总数的首选

我想创建一个总计数组,直到数组的那个索引。

所以对于 [2,1,2,1,2,1,1] 作为输入,我期望 [2, 3, 5, 6, 8, 9, 10] 作为输出

我知道 Javascript 方法,但在 Kotlin 中无法获取 JSFiddle here

var sumArr = []
var res = intrv.reduce((a,b) => {
     sumArr.push(a+b); 
 return a+b
})
console.log(sumArr)

等效的 Kotlin 代码应该是什么

Kotlin Playground trials

首先想到的是sliceArray()sum()

var gg = arrayOf<Int>(2,1,2,1,2,1,1)
val mg = gg.mapIndexed { index, _ ->  gg.sliceArray(0..index).sum() }
println(mg)

将打印:

[2, 3, 5, 6, 8, 9, 10]

对于每个项目,您都会从项目的位置开始获得数组的一部分,然后对该部分求和。

几乎1:1次转化:

var intrv = listOf(0,2,1,2,1,2,1,1)
var sumArr : MutableList<Int> = mutableListOf()
val sum = intrv.reduce { a, b -> sumArr.add(a+b); a + b }
println(sumArr)

打印:

[2, 3, 5, 6, 8, 9, 10]