我正在应对编程挑战。我需要反转该对象:
{
apple: [40, 49],
orange: [20, 21],
pear: [2, 50, 19]
}
以
的形式出现{
40: "apple",
49: "apple",
20: "orange",
21: "orange",
2: "pear",
50: "pear",
19: "pear",
}
使用for循环非常容易,但是挑战的规则之一是没有for循环或其他库。
这是我使用for循环的解决方案,是否可以不使用for循环来做到这一点?
var temp = {}
for (var key in fruit) {
for (var i in fruit[key]) {
temp[fruit[key][i]] = key;
}
}
console.log(temp);
答案 0 :(得分:1)
您可以尝试使用array.reduce和Object.entries:
let input = {
apple: [40, 49],
orange: [20, 21],
pear: [2, 50, 19]
};
let result = Object.entries(input).reduce((acc, current) => {
let [k,v] = current;
v.forEach(val => acc[val] = k);
return acc;
}, {})
console.log(result);
答案 1 :(得分:1)
const temp = Object.fromEntries(Object.entries(fruit).flatMap(([k, vs]) => vs.map(v => [v, k])));
这基本上也是循环的,只是更加晦涩。