Подтвердить что ты не робот

TypeScript и функция уменьшения массива

Знаете ли вы, что делает функция массива reduce в TypeScript? Можете ли вы предоставить простой пример использования?

Я ищу в Google и TypeScript спецификацию языка, но не смог найти никаких достойных объяснений и примеров.

4b9b3361

Ответ 1

Это на самом деле массив JavaScript, reduce функцию, а не специфический для TypeScript.

Как описано в документации: применить функцию к аккумулятору и каждому значению массива (слева направо), чтобы уменьшить его до одного значения.

Вот пример, который суммирует значения массива:

let total = [0, 1, 2, 3].reduce((accumulator, currentValue) => accumulator + currentValue);
alert(total);

В окне alert отобразится 6.

Ответ 2

Просто примечание в дополнение к другим ответам.

Если для уменьшения задано начальное значение, иногда необходимо указать его тип, а именно:

a.reduce(fn, [])

возможно, придется

a.reduce<string[]>(fn, [])

или же

a.reduce(fn, <string[]>[])

Ответ 3

С помощью TypeScript generics вы можете сделать что-то вроде этого.

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);

Ответ 4

Уменьшить() это..

  • Метод redu() уменьшает массив до одного значения.
  • Метод redu() выполняет предоставленную функцию для каждого значения массива (слева направо).
  • Возвращаемое значение функции сохраняется в аккумуляторе (результат/итог).

Это было..

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. найти элемент, который не повторяется.
    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