如何使用不同的方法在 JavaScript 中添加兩個向量
本篇文章將介紹如何使用不同的方法在 JavaScript 中添加兩個向量。
在 JavaScript 中使用 for 循環(huán)添加向量類
您可以使用 for 循環(huán)在 JavaScript 中添加兩個向量。 同時,向量應該是 JavaScript 數(shù)組。
定義一個構造函數(shù),它將執(zhí)行加法并返回結果以開始。 最好將加法函數(shù)與構造函數(shù)分開編寫,以使代碼干凈并可在其他項目中重用。
加法函數(shù)應該起作用,以便第一個向量可以在第二個向量上調用它。
因此,第一個向量是調用者,第二個是被調用者。 因此,加法函數(shù)應按如下方式工作:
- 確保參數(shù)是相同長度的數(shù)組。 參數(shù)是第一個向量(調用者)和第二個數(shù)組(被調用者)。
- 構造一個空數(shù)組來存儲向量加法的最終結果。
- 循環(huán)調用者數(shù)組。
- 使用循環(huán)索引添加調用方數(shù)組和被調用方數(shù)組元素。
- 將結果推入步驟 1 創(chuàng)建的空數(shù)組。因此,它不再為空,因為它具有加法的結果。
- 使用新數(shù)組返回構造函數(shù)的新實例。
- 如果在此過程中出現(xiàn)問題,請返回錯誤。
下面的代碼是這些步驟的實現(xiàn)。 我們實施了額外的檢查,以確保用戶傳遞正確的矢量值。
我們添加了兩個向量來測試向量加法并將結果記錄到 Web 瀏覽器的控制臺。
代碼:
function Vector(arg) {
this.array = arg;
this.add = add;
}
function add(called_array) {
if (Array.isArray(this.array) && Array.isArray(called_array.array)) {
if (this.array.length === called_array.array.length) {
let result = [];
for (let i = 0; i < this.array.length; i++) {
if (typeof(this.array[i]) == "number" && typeof(called_array.array[i]) == "number") {
result.push(this.array[i] + called_array.array[i]);
} else {
result.push("Invalid vector value");
}
}
return new Vector(result);
} else {
return new Vector("The vectors are not the same length.");
}
} else {
return new Vector("One of your arguments or both of them is not an array.");
}
}
let caller_array = new Vector([3,5,7]);
let called_array = new Vector ([5,2,9]);
console.log(caller_array.add(called_array).array);輸出:
Array(3) [ 8, 7, 16 ]
在 JavaScript 中使用 Array.proyotype.map() 添加向量類
使用 Array.prototype.map() 添加向量需要向量本身是 JavaScript 數(shù)組。 與上一節(jié)類似,第一個數(shù)組應該是調用者。
這意味著我們將定義一個有助于添加的構造函數(shù)。 但是,我們不會將 add() 函數(shù)與構造函數(shù)分開定義。
這一次,我們將使 add() 函數(shù)成為構造函數(shù)原型的一部分。
add() 函數(shù)將返回構造函數(shù)的新實例。 然而,這個新實例的參數(shù)是調用數(shù)組在被調用數(shù)組上使用自定義函數(shù) Array.prototype.map() 的結果。
自定義函數(shù)執(zhí)行數(shù)組的添加。
我們使用 Array.prototype.map() 在下面的代碼中添加向量。 在此過程中,我們檢查了參數(shù)是否為相同長度的數(shù)組。
除此之外,代碼會拋出 TypeError。
代碼:
var Vector = function (arg){
this.array = arg;
};
Vector.prototype.add = function(called_array){
called_array = called_array.array;
let caller_array = this.array;
if (Array.isArray(caller_array) && Array.isArray(called_array)) {
if (caller_array.length !== called_array.length) {
throw new TypeError("Vectors have different length");
}
} else {
return new Vector("One of your arguments or both of them is not an array.");
}
return new Vector(caller_array.map(
function (caller_array_element, called_array_element) {
if (typeof(caller_array_element) == "number" && typeof(called_array_element) == "number") {
return caller_array_element + called_array[called_array_element];
} else {
return 'Invalid Vector value';
}
}));
}
let caller_array = new Vector([9,8,5]);
let called_array = new Vector ([2,5,8]);
console.log(caller_array.add(called_array).array);輸出:
Array(3) [ 11, 13, 13 ]
在 JavaScript 中使用 ES6 類添加向量類
使用 ES6 類添加向量背后的基本邏輯是自定義 add() 函數(shù),它使用 for 循環(huán)添加向量并返回 ES6 類的新實例。 在添加向量之前,請確保將它們存儲在一個數(shù)組中。
之后,第一個數(shù)組應該在第二個數(shù)組上調用 add() 函數(shù)。
我們在以下代碼中有一個 ES6 類,它使用 add() 函數(shù)添加兩個數(shù)組。 添加后,它將添加的結果傳遞給 ES6 類的新實例。
代碼:
class Vector {
constructor(arr) {
this.arr = arr;
}
add(called_array) {
let caller_array = called_array.arr;
if (Array.isArray(this.arr) && Array.isArray(caller_array)) {
if (this.arr.length === caller_array.length) {
let result = [];
for (let key in this.arr) {
if (typeof(this.arr[key]) == "number" && typeof(caller_array[key]) == "number") {
result[key] = this.arr[key] + caller_array[key];
} else {
result[key] = "Invalid Vector Value.";
}
}
return new Vector(result);
} else {
return new Vector('The vectors are not the same length.');
}
} else {
return new Vector("One of your arguments or both of them is not an array.");
}
}
}
let caller_array = new Vector([3,6,0]);
let called_array = new Vector ([1,5,0]);
console.log(caller_array.add(called_array).arr);輸出:
Array(3) [ 4, 11, 0 ]
通過在 JavaScript 中擴展 Array 類來添加 Vector 類
您可以創(chuàng)建一個擴展 JavaScript 原生 Array 類的矢量類。 因此,向量類應該實現(xiàn)一個函數(shù)來添加向量。
第一個向量可以調用第二個向量上的函數(shù)。 結果,您將得到加法的結果。
在下面的代碼中,我們擴展了原生 Array 類并使用 map() 函數(shù)遍歷調用的數(shù)組。 然后,我們可以將它的元素添加到調用者數(shù)組中并產生一個結果。
代碼:
class Vector extends Array {
add(called_array) {
if (this.length == called_array.length) {
return this.map((caller_array_element, called_array_element) => {
if (typeof(caller_array_element) == "number" && typeof(called_array_element) == "number"){
return caller_array_element + called_array[called_array_element];
} else {
return 'Invalid Vector value';
};
})
} else {
return "The vectors are not the same length.";
}
}
}
let caller_array = new Vector(1, 2, 4);
let called_array = new Vector(3, 9, 20);
console.log(caller_array.add(called_array));輸出:
Array(3) [ 4, 11, 24 ]
到此這篇關于如何在 JavaScript 中添加向量(Vector)類的文章就介紹到這了,更多相關js 添加向量(Vector)類內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
JavaScript檢查數(shù)字是否為整數(shù)或浮點數(shù)的方法
這篇文章主要介紹了JavaScript檢查數(shù)字是否為整數(shù)或浮點數(shù)的方法,涉及javascript類型判斷的相關技巧,需要的朋友可以參考下2015-06-06
bootstrap table合并行數(shù)據(jù)并居中對齊效果
這篇文章主要為大家詳細介紹了bootstrap table合并行數(shù)據(jù)并居中對齊效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-10-10
JavaScript運行機制之事件循環(huán)(Event Loop)詳解
這篇文章主要介紹了JavaScript運行機制之事件循環(huán)(Event Loop)詳解,本文從多個方面講解了Event Loop,需要的朋友可以參考下2014-10-10

