有没有一种方法可以通过使用为其分配的值从对象中提取特定的键名称?

时间:2019-09-25 07:29:07

标签: javascript object

我正在从旧的创建一个新的拼字游戏记分器。我创建了一个初始对象,其键是分数,每个键的值是字母数组。这是旧的得分键。

我正在尝试创建一个函数,该函数从数组中获取每个字母值  的值,并为新对象中的每个得分创建一个新键(我已经完成),然后为每个字母分配一个点值,该值就是它们与原始对象对应的键号。

我不确定如何为字母分配旧的分数键对象中最初给它们的点值。

我创建的函数:

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']
};

使用此代码,我得到了结果 {答:“ 1”,   E:“ 1”,   我:“ 1”,   O:“ 1”, 等等。

我期望得到的时间

{答:“ 1”,   D:“ 2”,   J:“ 8”,   问:“ 10”, 等等。

2 个答案:

答案 0 :(得分:3)

您可以直接分配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));

答案 1 :(得分:0)

// 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);