#javascript #arrays #reactjs
Вопрос:
Я новичок в React Hooks
этом деле . У меня есть state
, который выглядит так.
const [myData, setmyData] = useState([
{
"OrderId": "ord-898s1",
"Shoulder Size": "12",
"Amount": 200,
"Shoulder Width": "2",
},
{
"OrderId": "ord-898s2",
"Shoulder Size": "14",
"Amount": 790,
"Shoulder Width": "2",
}
])
var orderID = "ord-898s2"
var AmountToAdd = 100
Я хочу обновить Amount
значение в OrderID ord-898s2
. При добавлении 100
значение суммы в OrderID ord-898s2
должно быть 890
console.log(myData)
Требуемая Производительность:
[
{
"OrderId": "ord-898s1",
"Shoulder Size": "12",
"Amount": 200,
"Shoulder Width": "2",
},
{
"OrderId": "ord-898s2",
"Shoulder Size": "14",
"Amount": 890,
"Shoulder Width": "2",
}
]
Я попробовал вот это.
const result2 = myData.map((item) => {
if (item.OrderId === orderID) {
return { ...item, ["Amount"]:item.Amount 100 }
}
return item
})
setmyData(result2)
это не удалось. Я не знаю, как это сделать. Пожалуйста, помогите мне с некоторыми решениями.
Комментарии:
1. Ваша
.map()
логика должна работать, что заставляет вас думать, что она не работает?
Ответ №1:
Ты мог бы сделать это вот так:
setmyData((prev) =>
prev.map((el) =>
el.OrderId === "ord-898s2" ? { ...el, Amount: el.Amount 100 } : el
)
);
Ответ №2:
Попробуйте выполнить код ниже.
var data = [
{
"OrderId": "ord-898s1",
"Shoulder Size": "12",
"Amount": 200,
"Shoulder Width": "2",
},
{
"OrderId": "ord-898s2",
"Shoulder Size": "14",
"Amount": 790,
"Shoulder Width": "2",
}
];
var orderID = "ord-898s2"
var AmountToAdd = 100
data.forEach((item) =>
item.OrderId === orderID ? item.Amount = item.Amount AmountToAdd : item.Amount);
console.log(data);