在 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.maxMath.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.reduceMath.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