更改Javascript对象中的特定名称:值对

我试图简单地编写一个将JS对象中的属性值之一转换为整数的函数-具体地说,将每个水果的weight属性从字符串(“ 200g”)转换为int(200)

var basket = [
  {
    name: "apple",weight: "200g",type: "fruit"
  },{
    name: "bananas",weight: "90g",];

我想编写一个fnc将权重从str转换为int,然后将整个内容另存为新的JS对象-new_basket。 我不太确定如何在JS中构造函数,但是我有这样的东西:

for(var i=0; i<basket.length; i++) {
    new_basket = parseInt(basket.weight);
    console.log(new_basket)
}

我已经看到了forEach的示例,但是它们可以转换所有属性,而我只是希望转换所有权重。 预先感谢!

xumingel 回答:更改Javascript对象中的特定名称:值对

basket是一个列表,因此您需要使用[]运算符访问每个对象。您可以通过以下方式进行操作:

var basket = [
  {
    name: "apple",weight: "200g",type: "fruit"
  },{
    name: "bananas",weight: "90g",];

for(var i=0; i<basket.length; i++) {
    new_basket = parseInt(basket[i].weight);
    console.log(new_basket)
}

,

var basket = [
  {
    name: "apple",];

basket.forEach((data,i)=>{
  data['weight']=Number(String(data['weight']).replace('g',''))
})
console.log(basket);

您在这里,希望这会有所帮助。如果是这样,我很高兴!

basket.forEach((data,i)=>data['weight']=Number(String(data['weight']).replace('g','')));

在一行中,干净的代码对现有数组进行了修改。

,

您需要使用Object.assign将新键/值与原始对象合并到新对象内

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign

顺便说一句,使用map之类的高阶函数可以使您的代码更具可读性并允许链接。 map遍历一个数组并返回一个新数组。它接受可以进行所有转换的回调。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map

在您的情况下,您可以尝试执行以下操作:

const newFruits = fruits.map(fruit => {
    return Object.assign(fruit,{ weight: parseInt(fruit.weight) })
})

该函数循环遍历结果,然后使用Object.assign将新键/值与原始对象合并。

这是强制性的ES6 [和速记]方法:

const newFruits = fruits.map(({weight,...fruit}) => ({
    ...fruit,weight: +weight
})
本文链接:https://www.f2er.com/2508741.html

大家都在问