angular - 数组问题 - 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/ 内存不足消息。
可以做些什么来解决它?我的代码正确吗?
解决方案
你的错误是在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
,您将省略最后一个元素。我在上面的例子中改变了它。
推荐阅读
- arrays - 如果多个文件中存在单词时缺少单词,请在命令行中检查
- r - 计算匹配行的多个记录的两点之间的距离 - 循环两个矩阵的行
- javascript - 如何通过“复杂架构”获得 JSON 数据
- r - 如何反转data.table中的列表操作?
- analytics - 以太坊智能合约分析工具/服务
- c - 在 Linux 上将 CUDA 代码编译为静态库 (.a)
- mongodb - 无法连接到 MongoDB atlas 数据库(未处理的承诺)
- laravel-5 - 未捕获的 InvalidArgumentException:请提供有效的缓存路径
- regex - 使用 Apps 脚本匹配 unicode 字符类
- python - Keras + Tensorflow:模块“tensorflow”没有属性“name_scope”