如何从嵌套对象的数组中删除元素? (破折号)

时间:2019-08-09 10:47:32

标签: 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(),
        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个元素

3 个答案:

答案 0 :(得分:0)

您可以使用_.remove_.filter

请参阅此example

答案 1 :(得分:0)

您不需要String deviceid = await DeviceId.getID; 来完成此操作。

使用lodash从数组中删除第一个元素。

.shift()

使用let newData = {...data} newData.owner.kyc.shift() 从特定点删除元素。

.splice()

使用let newData = {...data} newData.owner.kyc.splice(0, 1) 删除不符合指定条件的项目

.filter()

由于您使用的是React,因此您希望这些数据处于组件状态,以便当您实际从阵列中删除某些内容时,App会更新以反映新结果。

请参阅沙箱:https://codesandbox.io/s/mystifying-fog-2yhwd

let newData = {...data}

newData.owner.kyc = newData.owner.kyc.filter((item, index) => {
   return index !== 0
})

答案 2 :(得分:0)

您可以使用Array原型方法本身, 如果要从正面移除

Array.prototype.shift.apply(data.owner.kyc,null)