我只想过滤fields元素以将其删除。我已经设法删除了所有数据,但是我希望该选项也只删除字段的一个值。我设法通过这段代码过滤数据
this.setState(
state => ({
data: state.data.filter((row, j) => j !== i),
})
);
但是我只想从data.fields中删除一项。我已经尝试过使用这个
this.setState(state => ({
data: state.data.filter((row, j) => row.fields[x].bitname !== k),
}));
但是我还没有运气。
这是数据结构:
data: [
{
registerName: "MANID",
address: 0,
mode: "R",
size: 8,
por: 0,
doc: "document level",
fields: [
{ bitname: 'INT', bitmask: '16', bitvalue: '*', maskname: '*', doc: 'doc level' },
{ bitname: 'IDLE_MODE', bitmask: '0', bitvalue: '*', maskname: '*', doc: 'doc level' },
]
}
]
答案 0 :(得分:1)
您应避免从现有对象中删除该字段,因为这会直接改变状态。尝试这样的事情。
this.setState(
state => (
{
data: state.data.map((row, j) => {
if (j === i) {
return {
...row,
fields: row.fields.filter(field => field.bitname !== k)
}
}
return row;
}),
}));
答案 1 :(得分:0)
如果您的对象是row.fields[x]
,而您想从该对象中删除bitname
属性,则正确的方法是:
delete row.fields[x].bitname
以下是从对象中删除属性的示例片段:
const field = {
name:'Sean',
age:25,
bitname:'some value'
}
delete field.bitname
console.log(field)