在 Array Angular 和 Typescript 中查找最小和最大元素
Posted
技术标签:
【中文标题】在 Array Angular 和 Typescript 中查找最小和最大元素【英文标题】:Find smallest & largest element in Array Angular & Typescript 【发布时间】:2019-01-21 05:38:47 【问题描述】:您好,我有数组,我需要执行各种操作,例如求和、总计、平均值。所有这三个都实现了,现在我需要在数组中找到最小值和最大值。我被困在下面的是代码。
下面是TS部分
people: Array<number> = [1, 2, 3, 4, 5];
total: number = 0;
arrayLength: number = this.people.length;
average: number = 0;
sum()
for (var i in this.people) this.total += this.people[i];
ngOnInit()
this.sum();
this.average = (this.total / this.arrayLength);
下面是 html 部分
<span *ngFor="let p of people" style="font-size:18px">p </span><br><br>
<button >Quantity</button> = arrayLength<Br><br>
<button >Average</button> = average<Br><br>
<button >Sum</button> <span *ngIf="sumShow"> = total</span><Br><br>
【问题讨论】:
【参考方案1】:将Math.max
和Math.min
与展开运算符结合使用。
get max()
return Math.max(...this.people);
get min()
return Math.min(...this.people);
【讨论】:
【参考方案2】:为此使用reduce
。
Stackblitz
上的演示 sum()
this.total = this.people.reduce((a, b)=>a + b);
ngOnInit()
this.sum();
this.max = this.people.reduce((a, b)=>Math.max(a, b));
this.min = this.people.reduce((a, b)=>Math.min(a, b));
this.average = (this.total / this.arrayLength);
<span *ngFor="let p of people" style="font-size:18px">p </span><br><br>
<button >Quantity</button> = arrayLength<Br><br>
<button >Average</button> = average<Br><br>
<button >Sum</button> <span > = total</span><Br><br>
<button >Max</button> <span > = max</span><Br><br>
<button >Min</button> <span > = min</span><Br><br>
【讨论】:
兄弟,我需要显示两个最小值,在我的情况下为 1,最大值为 5 我们可以在同一个数组上计算标准差吗? 哦,那会很有帮助。如果我们使用相同的数组标准偏差值将是 1.414214 好的兄弟慢慢来。完成后告诉我 嗨@JigneshMistry 我有更新链接Standard Deviation
用于计算平均值。【参考方案3】:
您可以为此使用 Array.reduce
和 Math.max()
、 Math.min()
。
const people = [1,2,3,4,5];
const max = people.reduce((a, b) => Math.max(a, b)); // 5
const min = people.reduce((a, b) => Math.min(a, b)); // 1
const sum = people.reduce((a, b) => a+b, 0); // 15
您可以在 here 中找到一个工作示例
【讨论】:
谢谢你的朋友:)【参考方案4】:您可以为自己创建一个小助手类,为您执行这些操作并且可在整个代码中重用
export class MathOps
array: number[];
constructor(array: number[])
this.array = array;
sum(): number
return this.array.reduce((a, b) => a + b, 0);
avg(): number
return this.sum() / this.array.length;
max(): number
return Math.max(...this.array);
min(): number
return Math.min(...this.array);
const ops = new MathOps([1, 2, 3, 4, 5]);
console.log(ops.avg());
console.log(ops.max());
console.log(ops.min());
console.log(ops.sum());
注意:
根据用例,您需要将其扩展到缓存结果...
【讨论】:
解决了我所有问题的好帮手以上是关于在 Array Angular 和 Typescript 中查找最小和最大元素的主要内容,如果未能解决你的问题,请参考以下文章
安装typescript的命令,编译typescr为JavaScript
使用 SystemJS 的混合 AngularJS/Angular 应用程序中的 Lodash。我可以单独分配'_'吗?
在 Array Angular 和 Typescript 中查找最小和最大元素
Ionic Angular Mobile App 在从项目中的文件中获取和显示 json-array 数据时显示错误---
Angular5:TypeError:您在预期流的位置提供了“未定义”。您可以提供 Observable、Promise、Array 或 Iterable
如何修复错误“找不到此相关模块:* ./src/main.js in multi (webpack)-dev-server”在 npm run serve in vue3.x with typescr