#javascript #reactjs
#javascript #reactjs
Вопрос:
У меня есть этот массив, и я хотел обновить выбранный шаблон frameId внутри определенного объекта, используя идентификатор
, который я пробовал, но если я выберу frameId = 1, например, отредактируется весь шаблон frameId 1, мне нужен только выбранный идентификатор.
sizes.map(size => {
if(size.id === id){
size.frames.map(frame => {
if(frame.frameId === frameId){
frame.template = {test: '101'}
}
return frame
})
}
return size
})
[
{
id: 1,
name: 'Mrec',
frames: [
{
frameId: 1,
template: {},
img: [],
},
{
frameId: 2,
template: {},
img: [],
},
],
active: false
},
{
id: 2,
name: 'Leaderboard',
frames: [
{
frameId: 1,
template: {},
img: [],
},
{
frameId: 2,
template: {},
img: [],
},
],
active: false
}
]
Комментарии:
1. Я думаю, у вас должна быть опечатка
if(frame.id === frameId)
if(frame.frameId === frameId)
. Измените это, и оно должно работать2. @ptothep tnx bud
Ответ №1:
Я думаю, что правильный способ заключается в следующем. (#edit: это работает с фрагментом)
var id = 1,
frameId=2;
var sizes = [
{
id: 1,
name: 'Mrec',
frames: [
{
frameId: 1,
template: {},
img: [],
},
{
frameId: 2,
template: {},
img: [],
},
],
active: false
},
{
id: 2,
name: 'Leaderboard',
frames: [
{
frameId: 1,
template: {},
img: [],
},
{
frameId: 2,
template: {},
img: [],
},
],
active: false
}
]
sizes.map(size => {
let frames;
if (size.id === id) {
frames = size.frames.map(frame => {
if (frame.frameId === frameId) {
frame.template = { test: '101' }
}
return frame;
})
} else {
frames = size.frames;
}
return {...size,frames}
})
document.write(JSON.stringify(sizes))
Комментарии:
1. все тот же вывод, каждый идентификатор фрейма заполняется
2. Не могли бы вы запустить фрагмент