我正在从旧的创建一个新的拼字游戏记分器。我创建了一个初始对象,其键是分数,每个键的值是字母数组。这是旧的得分键。
我正在尝试创建一个函数,该函数从数组中获取每个字母值 的值,并为新对象中的每个得分创建一个新键(我已经完成),然后为每个字母分配一个点值,该值就是它们与原始对象对应的键号。
我不确定如何为字母分配旧的分数键对象中最初给它们的点值。
我创建的函数:
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”, 等等。
答案 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);