Есть ли способ извлечь конкретное имя ключа из объекта, используя значение, которое ему присвоено? - PullRequest
2 голосов
/ 25 сентября 2019

Я создаю новый бомбардир из старого.Я создал исходный объект, ключи которого являются баллами, а значение для каждого ключа представляет собой массив букв.Это старый ключ счета.

Я пытаюсь создать функцию, которая берет каждое буквенное значение из массива значений в старом ключе счета и создает новый ключ для каждого в новом объекте (что я сделал), а затем назначает каждой буквызначение точки, которое было их соответствующим номером ключа от исходного объекта.

Я не уверен, как присвоить буквам значение точки, которое они первоначально дали в старом объекте ключа счета.

Функция, которую я создал:

function transform(oldScoreKey) {
  let newScoreKey = {};
  for (var item in oldScoreKey) {
    for (i = 0; i < oldScoreKey[item].length; i++) {
      newScoreKey[oldScoreKey[item][i]] = Object.keys(oldScoreKey)[0];
    }
  }
  return newScoreKey;
}

Старый ключ счета:

const oldScoreKey = {
   1: ['A', 'E', 'I', 'O', 'U', 'L', 'N', 'R', 'S', 'T'],
   2: ['D', 'G'],
   3: ['B', 'C', 'M', 'P'],
   4: ['F', 'H', 'V', 'W', 'Y'],
   5: ['K'],
   8: ['J', 'X'],
   10: ['Q', 'Z']
};

с этим кодом я получаю результаты {A: '1', E: «1», I: «1», O: «1» и т. Д.}

, когда я ожидал получить

{A: '1', D: '2', J:' 8 ', Q:' 10 'и т. Д.}

Ответы [ 2 ]

3 голосов
/ 25 сентября 2019

Вы можете присвоить item непосредственно как значение, не беря ключи.

function transform(oldScoreKey) {
  let newScoreKey = {};
  for (var item in oldScoreKey) {
    for (var i = 0; i < oldScoreKey[item].length; i++) { // declare i otherwise it's global
      newScoreKey[oldScoreKey[item][i]] = item;          // take item
    }
  }
  return newScoreKey;
}

const oldScoreKey = {
   1: ['A', 'E', 'I', 'O', 'U', 'L', 'N', 'R', 'S', 'T'],
   2: ['D', 'G'],
   3: ['B', 'C', 'M', 'P'],
   4: ['F', 'H', 'V', 'W', 'Y'],
   5: ['K'],
   8: ['J', 'X'],
   10: ['Q', 'Z']
};

console.log(transform(oldScoreKey));
0 голосов
/ 25 сентября 2019

// console.log(0.2 + 0.4)

const oldScoreKey = {
   1: ['A', 'E', 'I', 'O', 'U', 'L', 'N', 'R', 'S', 'T'],
   2: ['D', 'G'],
   3: ['B', 'C', 'M', 'P'],
   4: ['F', 'H', 'V', 'W', 'Y'],
   5: ['K'],
   8: ['J', 'X'],
   10: ['Q', 'Z']
};

const finalObj = {};

Object.keys(oldScoreKey).forEach((key) => {
	oldScoreKey[key].forEach((val) => {
  	// console.log(val, key);
  	finalObj[val] = key;
  });
});


console.log(finalObj);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...