我是React native的新手,我想在另一个对象数组内的对象数组内添加值。我有这样的数据:
dataAttribute: [
{
id: 1,
title: 'A',
data: [
{ id: '1', name: 'First Name', type: 'text' },
{ id: '2', name: 'Last Name', type: 'text' },
],
},
{
id: 2,
title: 'B',
data: [
{ id: '1', name: 'Twitter', type: 'text' },
{ id: '2', name: 'Twitter follower', type: 'number' },
],
}
]
我想在子数组中添加参数'statusSelected == true',
dataAttribute: [
{
id: 1,
title: 'A',
data: [
{ id: '1', name: 'First Name', type: 'text', statusSelected: true},
{ id: '2', name: 'Last Name', type: 'text' },
],
},
{
id: 2,
title: 'B',
data: [
{ id: '1', name: 'Twitter', type: 'text' },
{ id: '2', name: 'Twitter follower', type: 'number' },
],
}
]
答案 0 :(得分:2)
尝试
dataAttribute = [
{
id: 1,
title: 'A',
data: [
{ id: '1', name: 'First Name', type: 'text' },
{ id: '2', name: 'Last Name', type: 'text' },
],
},
{
id: 2,
title: 'B',
data: [
{ id: '1', name: 'Twitter', type: 'text' },
{ id: '2', name: 'Twitter follower', type: 'number' },
],
}
]
const changeMe = (dataAttribute, attrId, dataId) => dataAttribute.map(x => x.id === attrId ? {...x, data: x.data.map(y => y.id === dataId ? {...y, statusSelected: true} : y)} : x)
console.log(changeMe(dataAttribute, 1, "1"))
输出:
[ { "id": 1, "title": "A", "data": [ { "id": "1", "name": "First Name", "type": "text", "statusSelected": true }, { "id": "2", "name": "Last Name", "type": "text" } ] }, { "id": 2, "title": "B", "data": [ { "id": "1", "name": "Twitter", "type": "text" }, { "id": "2", "name": "Twitter follower", "type": "number" } ] }
为结果附加了JsFiddle。
答案 1 :(得分:1)
您可以映射到数组,直到找到要在其中添加额外数据的元素。假设您知道要在其中添加信息的ID和子ID:
const updatedDataAttribute = dataAttribute.map((item) => {
if (item.id === <desired item id>) {
return {
...item,
data: item.data.map((datum) => {
if (datum.id === <desired sub item id>) {
return {
...datum,
statusSelected: true,
}
}
return datum
}),
}
}
return item
})
答案 2 :(得分:0)
实现此目的的一种简单方法是,通过在数据数组的第一项上将statusSelected
属性定义为true
来简单地使对象变异。
因此,假设您在这样的对象中定义了dataAttribute
:
var object = {
dataAttribute: [
{
id: 1,
title: 'A',
data: [
{ id: '1', name: 'First Name', type: 'text' },
{ id: '2', name: 'Last Name', type: 'text' },
],
},
{
id: 2,
title: 'B',
data: [
{ id: '1', name: 'Twitter', type: 'text' },
{ id: '2', name: 'Twitter follower', type: 'number' },
],
}
]
}
// add statusSelected to the first item of the nested data array
object.dataAttribute[0].data[0].statusSelected = true;
这将产生您需要的更新对象。