фильтровать общую подстроку для ключей перечисления в машинописи - PullRequest
0 голосов
/ 01 апреля 2020

У меня есть две карты enum, и я хочу создать массив для ключей enum, удаляя общую подстроку в массиве, чтобы я мог использовать ее и для других карт enum. Формат перечисления имеет вид

enum Test {
   test_value_error = 1;
   test_value_log = 2;
   test_value_main = 3;
   test_value_acknowledge = 4;}
enum Test1 {
   short_set_measure = 5;
   short_set_log_check = 6;
   short_set_finite_check = 7;}

in this case I want to remove common substring from two enum map using a common function and convert it to array. So far I have been able to filter it to array format but can't filter out substring. 
below is my code.

. Функция toArray (enumname: object) {return Object.keys (obj) .map (key => key.replace (/ _ / g, '')) ;}

Still new to typescript so any help will be beneficial

1 Ответ

0 голосов
/ 01 апреля 2020

Короткий ответ

Вы ищете это?

enum Test {
  test_value_error = 1,
  test_value_log = 2,
  test_value_main = 3,
  test_value_acknowledge = 4
}

function toArray(enumname: object) {
  return Object.keys(enumname).map(key => key.replace(/test_value/g, ""));
}

const arr = toArray(Test);

console.log(arr);

Удаляет test_value с каждой клавиши. Вывод выглядит так:

[ '1', '2', '3', '4', '_error', '_log', '_main', '_acknowledge' ]

Альтернативы

// [ '1', '2', '3', '4', 'error', 'log', 'main', 'acknowledge' ]
function toArray(enumname: object) {
  return Object.keys(enumname).map(key => key.replace(/test\_value\_/g, ""));
}

// [ 'error', 'log', 'main', 'acknowledge' ]
function toArray(enumname: object) {
  return Object.keys(enumname)
    .filter(key => !parseInt(key))
    .map(key => key.replace(/test\_value\_/g, ""));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...