gpt4 book ai didi

javascript - Javascript 中的向量类

转载 作者:行者123 更新时间:2023-11-30 12:33:43 26 4
gpt4 key购买 nike

我正在尝试实现一个如下实例化的矢量对象...

var a = new Vector([1,2,3]);
var b = new Vector ([2,2,2]);

...当我进行数学运算时,我需要这样的东西...

a.add(b); // should return Vector([3,4,5])

...但是我下面的代码只返回一个数组

function Vector(components) {
// TODO: Finish the Vector class.
this.arr = components;
this.add = add;
}

function add(aa) {
if(this.arr.length === aa.arr.length) {
var result=[];
for(var i=0; i<this.arr.length; i++) {
result.push(this.arr[i]+aa.arr[i]);
}
return result;
} else {
return error;
}
}

请帮帮我。谢谢!

最佳答案

也许扩展 javascript 的 native Array 更简单,因此无需保留额外的 Vector.arr 属性。这是一个简单的实现,用于学习目的,在现代 JS 中归结为:

class Vector extends Array {
// example methods
add(other) {
return this.map((e, i) => e + other[i]);
}
}

// example usage
let v = new Vector(1, 2, 3);
console.log(v.add(v));

这个类继承了Array的构造函数。请注意,传入单个值会创建一个该长度的空数组,而不是长度为 1 的数组。矢量会 require a super call in the constructor继承exotic Array behavior ,例如具有特殊的 length 属性,但是对于固定长度的数学向量来说,这不需要。您可以在此处包含更高级的构造函数行为,例如能够从数组作为输入进行构造。

关于javascript - Javascript 中的向量类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26785458/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com