TypeScript和数组减少功能

时间:2012-12-30 01:25:19

标签: arrays typescript

你知道数组reduce函数在TypeScript中做了什么吗? 您能提供一个简单的使用示例吗?

我在Google和TypeScript language specification上搜索,但找不到任何合适的解释和示例。

4 个答案:

答案 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()是..

  • reduce()方法将数组减小为单个值。
  • 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);

您也可以在

中使用
  1. 找到最大值
    let array=[5,4,19,2,7];
    function findMax(acc,val)
    {
     if(val>acc){
       acc=val; 
     }
    }

    let biggest=arrays.reduce(findMax); // 19
  1. find an element that not repeated
    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