#javascript #typescript
Вопрос:
Я просто хочу написать простую функцию, которая преобразует массив с 2 значениями [7, 9]
в объект с ключами x amp; y, например : { x: 7, y: 9 }
interface coordinates {
x: number;
y: number;
}
function getAnObjectOfnum(arr: number[]): coordinates;
function getAnObjectOfnum(arg1: unknown, arg2?: unknown): coordinates {
let coord: coordinates = {
x: 0,
y: 0,
};
if (Array.isArray(arg1)) {
const converted = arg1.reduce((a, v, i) => ({ ...a, [i]: v }), {});
}
return coord;
}
console.log(getAnObjectOfnum([7, 9]));
Это моя попытка найти решение.
Комментарии:
1. Почему функция перегружена? Почему
reduce
? Ни то, ни другое, похоже, не относится к тому, что вы сказали, что хотите сделать.2. это всего лишь небольшая часть проектов, основной из которых имеет 15 перегрузок . основная цель состоит в том , что я хочу управлять данными,введенными с помощью машинописного текста , такими как строка «x:98, y:15», объект { f: 25, t: 48} и т.д. как я уже сказал , эта короткая часть кода была моей попыткой найти правильный путь, потому что я попросил ее найти лучший, вы можете игнорировать мой код .
Ответ №1:
Я просто хочу написать простую функцию, которая преобразует массив с 2 значениями
[7, 9]
в объект с ключами x amp; y, например :{ x: 7, y: 9 }
Если нет требований, которые вы не описываете в вопросе, это может быть намного проще:
function getAnObjectOfnum(arr: [number, number]): coordinates {
return {x: arr[0], y: arr[1]};
}
Обратите внимание , что я использовал [number, number]
вместо number[]
этого, так как нам нужны ровно два значения. Это тип кортежа.
Это можно сделать более кратким, используя деструктуризацию параметров, но, возможно, за счет ясности (или, возможно, нет; если вы знакомы с деструктуризацией, это яснее, чем я думал):
function getAnObjectOfnum([x, y]: [number, number]): coordinates {
return {x, y};
}