更改对象数组中特定对象的值-JavaScript


大家好,我正在尝试使用React和功能组件创建一个棋盘游戏,所以我使用了钩子。

我有一个由大约30个物体组成的阵列,代表棋盘上的区域:

[...,{
"id": 3,
"name": "Berlin",
"country": "Germany",
"price": 2500,
"floorPrice": 500,
"buildingPrice": 1500,
"baseFee": 300,
"maxFee": 2000,
"pawns": [],
"type": "city",
"owner": {}
},
{
"id": 4,
"name": "Warsaw",
"country": "Poland",
"price": 2400,
"floorPrice": 400,
"buildingPrice": 1200,
"baseFee": 250,
"maxFee": 1800,
"pawns": [],
"type": "city",
"owner": {}
},...]

当典当进入一个特定的领域时,它可以从这个领域购买财产,就像在垄断中一样,通过在对象中添加典当作为所有者。这是有效的,但当我试图购买另一处房产/田地时,我在这处房产之前购买的最后一处房产就失去了主人。

这是我从json:修改数组副本的代码

setAllFields(
allFields.map(item => (
{...item, owner: (item.id !== playerOne.position ? item.owner : (item.owner = {'owner': 'playerOne'}))}
))
);

我真的很感激任何建议:(

let allFields = [];
const myFieldsArr = [
{
"id": 1,
"name": "Wroclaw",
"pawns": ['playerOne'],
"owner": []
},
{
"id": 2,
"name": "Warsaw",
"pawns": ['playerTwo'],
"owner": []
},
{
"id": 3,
"name": "Lodz",
"pawns": [],
"owner": []
}
]
allFields = myFieldsArr.map(field => (
{...field, owner: (field.id === 1 ? (field.owner =['playerOne']) : field.owner)}
))
console.log(allFields)

allFields = myFieldsArr.map(field => (
{...field, owner: (field.id === 2 ? (field.owner =['playerTwo']) : field.owner)}
))

console.log(allFields)
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>

setAllFields(
allFields.map(item => (
{...item, owner: (item.id !== playerOne.position ? item.owner : ['playerOne']}
))
);

这就是你要找的吗?

最新更新