Vis*_*hwa 2 javascript arrays vector
我正在尝试实现一个实例化的矢量对象,如下所示......
var a = new Vector([1,2,3]);
var b = new Vector ([2,2,2]);
Run Code Online (Sandbox Code Playgroud)
...当我进行数学运算时,我需要这样的东西...
a.add(b); // should return Vector([3,4,5])
Run Code Online (Sandbox Code Playgroud)
...但是下面的代码只返回一个数组
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;
}
}
Run Code Online (Sandbox Code Playgroud)
请帮我一下。谢谢你!
也许扩展 javascript 的原生 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));Run Code Online (Sandbox Code Playgroud)
该类继承了Array的构造函数。请注意,传入单个值会创建该长度的空数组,而不是长度为 1 的数组。Vector 需要在super构造函数中进行调用才能继承奇异的 Array 行为,例如具有特殊length属性,但对于固定长度的数学向量来说不需要这样做。您可以在此处包含更奇特的构造函数行为,例如能够从数组作为输入进行构造。
| 归档时间: |
|
| 查看次数: |
49086 次 |
| 最近记录: |