我有以下包含转换因子的对象:
const convertToYards =
{
"feet": 3,
"meters": 0.9144,
"yards": 1
}
Run Code Online (Sandbox Code Playgroud)
然后有一个变量保存一个数字,如下所示:
const maximumYards = 500;
我试图找出一种方法将所有值乘以convertToYards数字,maximumYards以便创建一个新对象,如下所示:
const maximums =
{
"feet": 1500,
"meters": 457.2,
"yards": 500
}
Run Code Online (Sandbox Code Playgroud)
我试过这个
const maximums = Object.values(convertToYards).map(o => o * maximumYards);
Run Code Online (Sandbox Code Playgroud)
但这会创建一个数组而不是一个对象,因此它不会携带原始的键名称。应该如何修改以获得所需的输出?
您可以通过组合Object.entries(获取数组)、map(映射值)和Object.fromEntries(再次获取对象)来完成此操作:
const maximums = Object.fromEntries(
Object.entries(convertToYards).map(([name, value]) => [name, value * maximumYards])
);
Run Code Online (Sandbox Code Playgroud)
const maximums = Object.fromEntries(
Object.entries(convertToYards).map(([name, value]) => [name, value * maximumYards])
);
Run Code Online (Sandbox Code Playgroud)
或者只是使用for-in循环;convertToYards不过,如果可能的话,您可能需要清除继承的属性:
const maximums = {};
for (const name in convertToYards) {
maximums[name] = convertToYards[name] * maximumYards;
}
Run Code Online (Sandbox Code Playgroud)
const convertToYards = {
"feet": 3,
"meters": 0.9144,
"yards": 1
};
const maximumYards = 500;
const maximums = Object.fromEntries(
Object.entries(convertToYards).map(([name, value]) => [name, value * maximumYards])
);
console.log(maximums);Run Code Online (Sandbox Code Playgroud)
中间立场是keys与以下一起使用for-of:
const maximums = {};
for (const name of Object.keys(convertToYards)) {
maximums[name] = convertToYards[name] * maximumYards;
}
Run Code Online (Sandbox Code Playgroud)
const maximums = {};
for (const name in convertToYards) {
maximums[name] = convertToYards[name] * maximumYards;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1305 次 |
| 最近记录: |