You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用自定义Matrix类构造函数填充矩阵的正确传参方式是什么?

问题根因

Array.prototype.splice 方法的返回值为被删除元素组成的数组,而非修改后的原数组。
现有构造函数执行时,传入16个参数,m.length 为16,对应执行逻辑:

  1. 生成长度为16、元素全为0的数组
  2. 调用splice从索引0开始删除16个元素(所有初始0),同时插入传入的16个参数
  3. splice返回被删除的16个0组成的数组,赋值给this.m,因此最终矩阵全为0
解决方案

修复构造函数逻辑(推荐)

原构造函数写法存在逻辑错误,调整为先创建数组、执行splice修改,再将修改后的数组赋值给this.m即可:

export class Matrix {
  constructor(...m) {
    console.log(...m);
    // 先创建初始全0数组
    this.m = new Array(16).fill(0);
    // 用传入的参数替换前m.length个元素
    this.m.splice(0, m.length, ...m);
  }

  toArray() {
    return [...this.m];
  }

  toString() {
    return `(${this.m.join(',')})`;
  }
  negate(){

  }
}

修复后使用原有调用方式即可正常填充矩阵:

const mtrx = new Matrix(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16);

内容的提问来源于stack exchange,提问作者lol nol

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 16:06:04