开发者问题收集

如何更改对象数组中数组的每个值?

2019-10-25
142

基本上,我有一个对象数组。每个对象都有一个数组,我需要更改其值。

我正在使用 React,因此这是一个状态:

[
  {
    "points": [
      60,
      5,
      60,
      20,
      70,
      20,
      70,
      15
    ],
    "finished": true,
    "color": "#6292C6"
  },
  {
    "points": [
      80,
      15,
      80,
      25,
      90,
      25
    ],
    "finished": true,
    "color": "#3FD971"
  },
  {
    "cultureName": "",
    "points": [],
    "finished": false
  }
]

更改此状态的 points 值的最佳方法是什么?我需要将它们乘以一个因子(4.96)。

3个回答

map 您的数组, spread 其中的每个对象仅覆盖属性 pointsmap 将每个项目乘以因子 4.96

const data = [{id: 1, points: [1,2,3]}, {id: 2, points: []}]

const changedData = data.map(item =>({
    ...item,
    points : item.points.map(value => value * 4.96)
}))

console.log(changedData)
Dupocas
2019-10-25

使用嵌套映射

const myData = [
    {"points": [60,5,60,20,70,20,70,15],"finished": true,"color": "#6292C6"},
    {"points": [80,15,80,25,90,25],"finished": true,"color": "#3FD971"},
    {"cultureName": "","points": [],"finished": false}
]
  
  
  const newArray = myData.map(elm=>{
    const points = elm.points.map(point=> point*4.96)
    return {...elm , points}
  })
  
  console.log(newArray)
Willman.Codes
2019-10-25
const factor = 4.96
const arrayOfObject = [] // .. here your array of objects
const modifiedArrayOfObjects = arrayOfObject.map( stats => {
  const newPoints = stats.points.map(point => point * factor)
  stats.points = newPoints
  return stats
}

在这里我创建了一个新的对象数组,其中我将每个对象映射到一个对象,其中每个点都乘以了你的因子。

michimo
2019-10-25