你知道数组reduce
函数在TypeScript中做了什么吗?
您能提供一个简单的使用示例吗?
我在Google和TypeScript language specification上搜索,但找不到任何合适的解释和示例。
答案 0 :(得分:33)
它实际上是JavaScript数组reduce
函数,而不是特定于TypeScript的东西。
如the docs中所述:对累加器和数组的每个值(从左到右)应用函数,以将其减少为单个值。
这是一个TypeScript示例,它总结了数组的值:
let total = [0, 1, 2, 3].reduce((a, b) => a + b);
alert(total);
alert
框会显示6
。
答案 1 :(得分:14)
除了其他答案外,还有一个注释。
如果提供初始值以减少,则有时必须指定其类型,即: -
a.reduce(fn, [])
可能必须
a.reduce<string[]>(fn, [])
或
a.reduce(fn, <string[]>[])
答案 2 :(得分:9)
使用TypeScript泛型,您可以执行以下操作。
class Person {
constructor (public Name : string, public Age: number) {}
}
var list = new Array<Person>();
list.push(new Person("Baby", 1));
list.push(new Person("Toddler", 2));
list.push(new Person("Teen", 14));
list.push(new Person("Adult", 25));
var oldest_person = list.reduce( (a, b) => a.Age > b.Age ? a : b );
alert(oldest_person.Name);
答案 3 :(得分:3)
Reduce()是..
是..
let array=[1,2,3];
function sum(acc,val){ return acc+val;} // => can change to (acc,val)=>acc+val
let answer= array.reduce(sum); // answer is 6
更改为
let array=[1,2,3];
let answer=arrays.reduce((acc,val)=>acc+val);
您也可以在
中使用 let array=[5,4,19,2,7];
function findMax(acc,val)
{
if(val>acc){
acc=val;
}
}
let biggest=arrays.reduce(findMax); // 19
arr = [1, 2, 5, 4, 6, 8, 9, 2, 1, 4, 5, 8, 9]
v = 0
for i in range(len(arr)):
v = v ^ arr[i]
print(value) //6