Введите скрипт, чтобы получить максимальный массив

У меня есть массив с одним столбцом n_fnc, и я хотел бы найти максимальное значение. Я пытался с этим, но я ничего не получаю.

 let first = this.fncs.map(item => item.n_fnc);
   console.info("First",first);
    x= Math.max(...first);

[Введите скрипт, чтобы получить максимальный массив

служба фнк

getlastid(response,fncs:Fnc[]):void{
      let fnc:Fnc;
      response.forEach(element => {
        
        fnc =new Fnc();
        fnc.n_fnc=element.n_fnc;
        fncs.push(fnc);

    });

Компонент FNC.ts

this.fncs=[];
this.fncservice.obs.subscribe((response)=>this.fncservice.getlastid(response,this.fncs));
     console.info("A",this.fncs);
    var max= Math.max.apply(Math, this.fncs.map((m) => m.n_fnc));
    console.info("Max",max);

чтобы получить максимум «простых элементов»: developer.mozilla.org/es/docs/Web/JavaScript/Referencia/…

Eliseo 24.12.2020 10:12

Это не имеет ничего общего с нахождением макс. Просто ради производительности я рекомендую использовать обычный цикл for, чтобы найти максимум, если это возможно. Похоже, вы просто создаете еще один список из оригинала, а затем повторяете, чтобы получить максимум. Список кажется может быть довольно большим imo. Похоже, вы можете получить номер относительно легко. Не зацикливайтесь на этих причудливых ярлыках, если вы не хотите повторно использовать максимальный список где-то еще.

Yunhai 24.12.2020 10:22
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Angular и React для вашего проекта веб-разработки?
Angular и React для вашего проекта веб-разработки?
Когда дело доходит до веб-разработки, выбор правильного front-end фреймворка имеет решающее значение. Angular и React - два самых популярных...
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Мы провели Twitter Space, обсудив несколько проблем, связанных с последними дополнениями в Angular. Также прошла Angular Tiny Conf с 25 докладами.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
Мое недавнее углубление в Angular
Мое недавнее углубление в Angular
Недавно я провел некоторое время, изучая фреймворк Angular, и я хотел поделиться своим опытом со всеми вами. Как человек, который любит глубоко...
Освоение Observables и Subjects в Rxjs:
Освоение Observables и Subjects в Rxjs:
Давайте начнем с основ и постепенно перейдем к более продвинутым концепциям в RxJS в Angular
0
2
55
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вы можете использовать функцию apply, чтобы сделать это -

var fncs = [{
 n_fnc: 1
},{
 n_fnc: 499
},{
 n_fnc: 99
},{
 n_fnc: 10
}];

var max = Math.max.apply(Math, fncs.map((m) => m.n_fnc));
console.info(max);

Блок кода в fnc.component.ts должен выглядеть так:

this.fncs=[];
this.fncservice.obs.subscribe((response)=> {        
    this.fncservice.getlastid(response,this.fncs);
    console.info("A",this.fncs);
    var max= Math.max.apply(Math, this.fncs.map((m) => m.n_fnc));
    console.info("Max",max);
});

У меня есть таблица fncs как таблица объекта. это.fncs=[]; this.fncservice.obs.subscribe((ответ)=>this.fncservice.ge‌​tlastid(ответ,thi‌​s.fncs)); var max= Math.max.apply(Math, this.fncs.map((m) => m.n_fnc)); Я пробовал это, но она возвращает Infinity в максимальном значении

isawid 24.12.2020 10:12

Можете ли вы опубликовать структуру вашего массива?

Nikhil Patil 24.12.2020 10:15

@isawid, вы звоните Math.max.apply не из subscribe. Он должен быть внутри блока subscribe.

Nikhil Patil 24.12.2020 10:35

Как бы я это сделал, пожалуйста?

isawid 24.12.2020 10:40

@isawid, я обновил свой ответ фрагментом fnc.component.ts.

Nikhil Patil 24.12.2020 10:45

Давайте продолжим обсуждение в чате.

isawid 24.12.2020 15:35

Вы можете использовать функцию apply, чтобы сделать это -

let fncs = [{
 n_fnc: 1
},{
 n_fnc: 499
},{
 n_fnc: 99
},{
 n_fnc: 10
}];

let mytemp = fncs.sort((a, b) =>  { return b.n_fnc > a.n_fnc ? 1 : -1; });

console.info(mytemp[0]);

ошибка в функции (a, b) ... Тип «логический» не может быть присвоен типу «число».

isawid 24.12.2020 10:29

Другие вопросы по теме

Правильный способ вызова модального диалога из другого компонента в Angular?
Tsconfig для копирования файла .sql в dist
Как вызвать функцию, которая возвращает результат запроса mysql, чтобы отправить его обратно в результат Express.js?
Почему Subscribe работает без Observable в Angular
Как в функциональных компонентах переформатировать несколько обработчиков изменений в одной функции?
Создайте типизированный словарь с циклом for, используя перечисление в качестве типа ключа, но без использования `?` для пометки undefined в TypeScript
Тип возвращаемого значения Typescript в зависимости от параметра объекта
Как я могу написать функцию выбора, которая выбирает только свойства (без повторения типов в ограничениях общего типа) в машинописном тексте
Как установить состояние в TypeScript без получения ошибки присваивания?
Мое входное значение не меняется, когда я удаляю некоторый контент и меняю состояние