为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 ES6 中将对象值相乘并保留它们的键

如何在 ES6 中将对象值相乘并保留它们的键

慕丝7291255 2022-11-11 13:22:41
我有以下包含转换因子的对象:  const convertToYards =  {    "feet": 3,    "meters": 0.9144,    "yards": 1  }然后有一个变量包含这样的数字: const maximumYards = 500;我正在尝试找出一种方法将所有值乘以其中convertToYards的数字,maximumYards以便像这样创建一个新对象:  const maximums =  {    "feet": 1500,    "meters": 457.2,    "yards": 500  }我试过这个const maximums = Object.values(convertToYards).map(o => o * maximumYards);但这会创建一个数组而不是一个对象,因此它不会携带原始键名。应该如何修改以获得所需的输出?
查看完整描述

2 回答

?
万千封印

TA贡献1891条经验 获得超3个赞

您可以通过组合Object.entries(获取数组)、map(映射值)和Object.fromEntries(再次获取对象)来实现:

const maximums = Object.fromEntries(
    Object.entries(convertToYards).map(([name, value]) => [name, value * maximumYards])
    );

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

或者只是使用一个for-in循环;但是,如果可能有继承的属性,您可能需要清除convertToYards它们:


const maximums = {};

for (const name in convertToYards) {

    maximums[name] = convertToYards[name] * maximumYards;

}



const convertToYards = {

    "feet": 3,

    "meters": 0.9144,

    "yards": 1

};


const maximumYards = 500;


const maximums = {};

for (const name in convertToYards) {

    maximums[name] = convertToYards[name] * maximumYards;

}


console.log(maximums);

中间立场是使用keyswith for-of:


const maximums = {};

for (const name of Object.keys(convertToYards)) {

    maximums[name] = convertToYards[name] * maximumYards;

}


const convertToYards = {

    "feet": 3,

    "meters": 0.9144,

    "yards": 1

};


const maximumYards = 500;


const maximums = {};

for (const name of Object.keys(convertToYards)) {

    maximums[name] = convertToYards[name] * maximumYards;

}


console.log(maximums);


查看完整回答
反对 回复 2022-11-11
?
慕婉清6462132

TA贡献1804条经验 获得超2个赞

根据评论,您可以使用for .. in如下代码片段中所示的普通旧版本:


const convertToYards = {

  feet: 3,

  meters: 0.9144,

  yards: 1,

};


let maximums = {};

for (let a in convertToYards) {

  maximums[a] = convertToYards[a] * maximumYards;

}

console.log(maximums);


查看完整回答
反对 回复 2022-11-11
  • 2 回答
  • 0 关注
  • 61 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信