У меня есть массив с одним столбцом 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);
Это не имеет ничего общего с нахождением макс. Просто ради производительности я рекомендую использовать обычный цикл for, чтобы найти максимум, если это возможно. Похоже, вы просто создаете еще один список из оригинала, а затем повторяете, чтобы получить максимум. Список кажется может быть довольно большим imo. Похоже, вы можете получить номер относительно легко. Не зацикливайтесь на этих причудливых ярлыках, если вы не хотите повторно использовать максимальный список где-то еще.
Вы можете использовать функцию 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.getlastid(ответ,this.fncs)); var max= Math.max.apply(Math, this.fncs.map((m) => m.n_fnc)); Я пробовал это, но она возвращает Infinity в максимальном значении
Можете ли вы опубликовать структуру вашего массива?
@isawid, вы звоните Math.max.apply
не из subscribe
. Он должен быть внутри блока subscribe
.
Как бы я это сделал, пожалуйста?
@isawid, я обновил свой ответ фрагментом fnc.component.ts
.
Давайте продолжим обсуждение в чате.
Вы можете использовать функцию 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) ... Тип «логический» не может быть присвоен типу «число».
чтобы получить максимум «простых элементов»: developer.mozilla.org/es/docs/Web/JavaScript/Referencia/…