Javascript 将对象项乘以某个随机值并作为对象返回
我有一个包含如下对象的数组:Javascript 将对象项乘以某个随机值并作为对象返回,javascript,Javascript,我有一个包含如下对象的数组: [ { current_temperature: "16.75°C" name: "London" } ... ] 我需要将当前温度乘以某个值,并以与上面相同的格式返回 我试着像下面一样,但它不工作 this.data.map(item => { let temp = item['current_temperature']; Object.assign(this.data, {'current_temperature'
[
{
current_temperature: "16.75°C"
name: "London"
}
...
]
我需要将当前温度乘以某个值,并以与上面相同的格式返回
我试着像下面一样,但它不工作
this.data.map(item => {
let temp = item['current_temperature'];
Object.assign(this.data, {'current_temperature': temp.split('\u00B0')[0] * 32});
});
试试这个:
const数据=[
{
当前温度:“16.75℃,
姓名:“伦敦”
},
{
当前温度:“10.75℃,
名称:“突尼斯”
}
]
const result=(multip)=>data.map(res=>Object.assign({},res,{current_temperature:res.current_temperature.split('\u00B0')[0]*multip+'°C'));
console.log(结果(10))//乘以10
console.log(result(32))//乘以32假设要将输入数据转换为包含更新温度数据的新数组对象,则可以使用map()
回调函数:
通过spread操作符克隆每个映射的项目
将当前温度
字段传递到Number.parseFloat()
,将结果相乘,然后将其重新格式化为原始温度字符串格式
这种方法利用了Number.parseFloat()
的行为,输入字符串将解析与有效浮点数对应的字符串的第一个字符。如果输入字符串以“数字字符”开头,我们可以利用Number.parseFloat()
的内置行为来简化解决方案:
const输入=[{
当前温度:“16.75℃,
姓名:“伦敦”
},
{
当前温度:“12.00°C”,
名称:“奥克兰”
}
]
const output=input.map(item=>({…item,
/*解析当前温度的第一个浮动部分,乘以32,
格式化为字符串*/
当前温度:`${(Number.parseFloat(item.current_temperature)*32).固定温度(2)}`
}));
console.log(输出)
您希望分配给项,而不是此.data
(这是一个数组),并且您可能希望读取°CI,希望我的最终输出(内部温度)乘以32。是的,我还必须添加:)注意您也不需要map
,假设您想要更改原始对象(听起来像是这样),那么您使用的括号符号是错误的。在这种情况下,它应该是点符号。因此,item.current_temperature
@Kevin.a在这种情况下它实际上是不相关的,据我所知,它在这两种情况下都会起作用。为什么我得到的属性“map”在类型“{}”上不存在。我正在使用vscode。map下面有一条红线,当我在上面悬停时,我得到了那个错误。听起来像是你在调用{}
对象上的map()
,而不是数组[]
-你能再包含一些代码吗?const records=this.data;const output=records.map(item=>({…item,当前_温度:${(Number.parseFloat(item.current_温度)*32).toFixed(2)}摄氏度
});这个数据=输出;我的数据格式与您的数据格式相同。请将此数据添加到records.map(…)
之前,并告诉我控制台记录了什么console.log('this.data是数组:',array.isArray(this.data))
this.data是数组:true