如何使用不同的方法在 JavaScript 中添加兩個(gè)向量
本篇文章將介紹如何使用不同的方法在 JavaScript 中添加兩個(gè)向量。
在 JavaScript 中使用 for 循環(huán)添加向量類
您可以使用 for 循環(huán)在 JavaScript 中添加兩個(gè)向量。 同時(shí),向量應(yīng)該是 JavaScript 數(shù)組。
定義一個(gè)構(gòu)造函數(shù),它將執(zhí)行加法并返回結(jié)果以開始。 最好將加法函數(shù)與構(gòu)造函數(shù)分開編寫,以使代碼干凈并可在其他項(xiàng)目中重用。
加法函數(shù)應(yīng)該起作用,以便第一個(gè)向量可以在第二個(gè)向量上調(diào)用它。
因此,第一個(gè)向量是調(diào)用者,第二個(gè)是被調(diào)用者。 因此,加法函數(shù)應(yīng)按如下方式工作:
- 確保參數(shù)是相同長度的數(shù)組。 參數(shù)是第一個(gè)向量(調(diào)用者)和第二個(gè)數(shù)組(被調(diào)用者)。
- 構(gòu)造一個(gè)空數(shù)組來存儲向量加法的最終結(jié)果。
- 循環(huán)調(diào)用者數(shù)組。
- 使用循環(huán)索引添加調(diào)用方數(shù)組和被調(diào)用方數(shù)組元素。
- 將結(jié)果推入步驟 1 創(chuàng)建的空數(shù)組。因此,它不再為空,因?yàn)樗哂屑臃ǖ慕Y(jié)果。
- 使用新數(shù)組返回構(gòu)造函數(shù)的新實(shí)例。
- 如果在此過程中出現(xiàn)問題,請返回錯(cuò)誤。
下面的代碼是這些步驟的實(shí)現(xiàn)。 我們實(shí)施了額外的檢查,以確保用戶傳遞正確的矢量值。
我們添加了兩個(gè)向量來測試向量加法并將結(jié)果記錄到 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é)類似,第一個(gè)數(shù)組應(yīng)該是調(diào)用者。
這意味著我們將定義一個(gè)有助于添加的構(gòu)造函數(shù)。 但是,我們不會將 add() 函數(shù)與構(gòu)造函數(shù)分開定義。
這一次,我們將使 add() 函數(shù)成為構(gòu)造函數(shù)原型的一部分。
add() 函數(shù)將返回構(gòu)造函數(shù)的新實(shí)例。 然而,這個(gè)新實(shí)例的參數(shù)是調(diào)用數(shù)組在被調(diào)用數(shù)組上使用自定義函數(shù) Array.prototype.map() 的結(jié)果。
自定義函數(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í)例。 在添加向量之前,請確保將它們存儲在一個(gè)數(shù)組中。
之后,第一個(gè)數(shù)組應(yīng)該在第二個(gè)數(shù)組上調(diào)用 add() 函數(shù)。
我們在以下代碼中有一個(gè) ES6 類,它使用 add() 函數(shù)添加兩個(gè)數(shù)組。 添加后,它將添加的結(jié)果傳遞給 ES6 類的新實(shí)例。
代碼:
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 中擴(kuò)展 Array 類來添加 Vector 類
您可以創(chuàng)建一個(gè)擴(kuò)展 JavaScript 原生 Array 類的矢量類。 因此,向量類應(yīng)該實(shí)現(xiàn)一個(gè)函數(shù)來添加向量。
第一個(gè)向量可以調(diào)用第二個(gè)向量上的函數(shù)。 結(jié)果,您將得到加法的結(jié)果。
在下面的代碼中,我們擴(kuò)展了原生 Array 類并使用 map() 函數(shù)遍歷調(diào)用的數(shù)組。 然后,我們可以將它的元素添加到調(diào)用者數(shù)組中并產(chǎn)生一個(gè)結(jié)果。
代碼:
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 ]
到此這篇關(guān)于如何在 JavaScript 中添加向量(Vector)類的文章就介紹到這了,更多相關(guān)js 添加向量(Vector)類內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
JavaScript檢查數(shù)字是否為整數(shù)或浮點(diǎn)數(shù)的方法
這篇文章主要介紹了JavaScript檢查數(shù)字是否為整數(shù)或浮點(diǎn)數(shù)的方法,涉及javascript類型判斷的相關(guān)技巧,需要的朋友可以參考下2015-06-06
bootstrap table合并行數(shù)據(jù)并居中對齊效果
這篇文章主要為大家詳細(xì)介紹了bootstrap table合并行數(shù)據(jù)并居中對齊效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-10-10
Javascript 定時(shí)器調(diào)用傳遞參數(shù)的方法
Javascript 定時(shí)器調(diào)用傳遞參數(shù)的方法,需要的朋友可以參考下。2009-11-11
JavaScript運(yùn)行機(jī)制之事件循環(huán)(Event Loop)詳解
這篇文章主要介紹了JavaScript運(yùn)行機(jī)制之事件循環(huán)(Event Loop)詳解,本文從多個(gè)方面講解了Event Loop,需要的朋友可以參考下2014-10-10

