首页 > 解决方案 > 数组问题 - Angular 11 - 内存不足

问题描述

我遇到了以下问题。

它与位于 variables1.service.ts 文件中的数组相连。我创建了一个函数,它应该产生一个数组,结果是其他两个数组元素的乘法。我寻找了一个打字稿示例,但是我想知道它是否正确完成。我不是程序员,但我想学习......你能检查一下下面的代码是否有效吗?

变量1.service.ts

import { Injectable } from "@angular/core";
@Injectable({
  providedIn:'root'
})
export class Variables1Service{

  Fcomponent: number[]=[0,1,2,3,4,5,6,7,8,9,10];
  Scomponent: number[]=[0,1,2,3,4,5,6,7,8,9,10];

//产生问题的代码 - 开始

  createmulti(array1,array2){
    let array3:number[]=[];
    for (let i1 = 0; array1.length-1; i1++) {
      for (let i2 = 0; i2 < array2.length-1; i2++) {
        array3.push(array1[i1]*array2[i2]);
      }
    }
    return array3;
  }
  public Amulti = this.createmulti(this.Fcomponent,this.Scomponent);

//产生问题的代码 - 结束

  F1comp: number[]=this.Fcomponent;
  S1comp: number[]=this.Scomponent;

  shuffle(array){
    for (let i=array.length-1;i>0;i--) {
      let j=Math.floor(Math.random()*(i+1));
      [array[i],array[j]]=[array[j],array[i]];
    }
    return array;
  }

  public F1component = this.shuffle(this.F1comp);
  public S1component = this.shuffle(this.S1comp);

项目已成功编译,但是当我尝试在浏览器中查看它时:http://localhost:4200/ 内存不足消息。

可以做些什么来解决它?我的代码正确吗?

标签: angulartypescript

解决方案


你的错误是在createMulti的 for 循环中,你在外循环中没有条件。你需要i1 < array1.length你刚刚拥有的array1.length-1

// for (let i1 = 0; array1.length-1; i1++) {
for (let i1 = 0; i1 < array1.length; i1++)
  for (let i2 = 0; i2 < array2.length; i2++) {
     array3.push(array1[i1]*array2[i2]);
  }
}

此外,通过这样做i2 < array2.length - 1,您将省略最后一个元素。我在上面的例子中改变了它。


推荐阅读