каков наилучший способ преобразования массива в объект с помощью некоторых специальных ключей, таких как x

#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};
}
 

Ссылка на игровую площадку