我有兩個物件,如下所示:
var origin = {
x: 10,
y: 10
}
var coordinates = {
x: 5,
y: 5
}
我計算增量如下:
var delta = {
x : origin.x - coordinates.x,
y : origin.y - coordinates.y
}
這行得通,但我正在尋找一種更優雅的方式,因為我真正要做的就是原點 - 坐標。不幸的是,原點 - 坐標無效 javascript
有什么建議?也許使用...傳播運算子?
uj5u.com熱心網友回復:
基本答案是:不,沒有辦法做到可能通過您的“優雅”測驗。:-)(我喜歡Sairyu的方法創建一個可重用的函式[可能用更短的名稱]的。或者,你甚至可以讓它Point帶班add,sub等等)
“優雅”是一種價值判斷,但如果這些都在物件的唯一性,并要避免明確地寫x和y,你可以使用一個for..in回圈,一個for..of上環Object.keys,或組合Object.entries,map以及Object.fromEntries雖然對最后的開銷一個開始看起來有點矯枉過正。
const delta = {};
for (const key in origin) {
delta[key] = origin[key] - coordinates[key];
}
或者
const delta = {};
for (const key of Object.keys(origin)) {
delta[key] = origin[key] - coordinates[key];
}
或者
const delta = Object.fromEntries(
Object.entries(origin).map(
([key, value]) => [key, value - coordinates[key]]
)
);
但同樣:根據我能想象的大多數定義,這些都不太可能是“優雅的”。:-)
uj5u.com熱心網友回復:
也許最好的方法是創建一個函式
像這樣:
function calculate_coordinates(point1, point2) {
x = point1.x - point2.x;
y = point1.y - point2.y;
return {
x: x,
y: y
};
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/362811.html
標籤:javascript
