Javascript 如何从嵌套对象的数组中删除元素?(洛达斯)
我有一个像Javascript 如何从嵌套对象的数组中删除元素?(洛达斯),javascript,arrays,reactjs,underscore.js,lodash,Javascript,Arrays,Reactjs,Underscore.js,Lodash,我有一个像 data: { registrationNumber: 'MH1234', type: 'xyz', driver: { user: { firstName: 'xyz', lastName: 'abc', email: 'xyz', phone: 1234, city: 'random', dateOfBirth: new Date(),
data: {
registrationNumber: 'MH1234',
type: 'xyz',
driver: {
user: {
firstName: 'xyz',
lastName: 'abc',
email: 'xyz',
phone: 1234,
city: 'random',
dateOfBirth: new Date(),
groups: [1]
}
},
owner: {
user: {
firstName: 'xyz',
lastName: 'abc',
email: 'xyz',
phone: '1234',
city: 'random',
groups: [1, 2]
},
kyc: [
{
method: 'xyz',
id: 'abcd'
},
{
method: 'xyz',
id: 'abcd'
}
]
}
}
如何删除路径data.owner.kyc.0
处的元素
我尝试过使用{.unset(),但它并不理想,因为删除后数组仍显示2个元素您可以使用
。删除
或.filter
请参考此您不需要洛达斯
来完成此操作
使用.shift()
从数组中删除第一个元素
let newData = {...data}
newData.owner.kyc.shift()
使用.splice()
从某个点删除元素
let newData = {...data}
newData.owner.kyc.splice(0, 1)
使用.filter()
删除与指定条件不匹配的项
let newData = {...data}
newData.owner.kyc = newData.owner.kyc.filter((item, index) => {
return index !== 0
})
因为您使用的是React,所以您希望此数据处于组件状态,以便当您实际从阵列中删除某些内容时,应用程序将更新以反映新的结果
见沙箱:
类应用程序扩展了React.Component{
状态={
数据:数据
};
removeFirstItem=()=>{
const{data}=this.state;
让newData={…data};
newData.owner.kyc.shift();
这是我的国家({
数据:新数据
});
};
render(){
const{data}=this.state;
返回(
车辆信息:
KYC:
{data.owner.kyc.map((项,索引)=>{
返回(
{index+1})
{item.id}
);
})}
删除第一项
);
}
}
您可以使用数组原型方法本身,
如果要从前面拆下
Array.prototype.shift.apply(data.owner.kyc,null)
您可以执行obj.data.owner.kyc=obj.data.owner.kyc.splice(1)代码>,没有洛达斯这就成功了。谢谢:)@malikbagwala不客气:)
Array.prototype.shift.apply(data.owner.kyc,null)