如何按索引从对象数组 javascript 中的对象数组中删除对象

How to delete object from array of objects in array of objects javascript by index

如何从对象数组中的对象数组中按索引删除对象。

我想从对象 ID 为“A1”的变量值中删除数组中的第一个对象

let data =
[ 
  { id: 'A1',
    value:  [ { uri: 'B45AA03A05B7.jpg', type: 'image/jpeg' },
              { uri: '30A42FBC1146.jpg', type: 'image/jpeg' } ] 
  },
  { id: 'A2',
    value:  [ { uri: 'G455HFG2FF56.jpg', type: 'image/jpeg' },
              { uri: 'TY6DFG7RTGF.jpg', type: 'image/jpeg' } ] 
  }
]

需要输出

let data =
[ 
  { id: 'A1',
    value:  [ { uri: '30A42FBC1146.jpg', type: 'image/jpeg' } ] 
  },
  { id: 'A2',
    value:  [ { uri: 'G455HFG2FF56.jpg', type: 'image/jpeg' },
              { uri: 'TY6DFG7RTGF.jpg', type: 'image/jpeg' } ] 
  }
]

我试过了

const array1 = data.filter((item) => item.id == deleteId)

   if (delIndex > -1) {
     array1[0].value.splice(delIndex, 1);
   }

您可以找到对象并删除 value 的第一个对象。

let data = [{ id: 'A1', value: [{ uri: 'B45AA03A05B7.jpg', type: 'image/jpeg' }, { uri: '30A42FBC1146.jpg', type: 'image/jpeg' }] }, { id: 'A2', value: [{ uri: 'G455HFG2FF56.jpg', type: 'image/jpeg' }, { uri: 'TY6DFG7RTGF.jpg', type: 'image/jpeg' }] }],
    deleteId = 'A1',
    object = data.find(({ id }) => id == deleteId);

if (object) object.value.splice(0, 1);

console.log(data);

您可以尝试这样的操作:

data.reduce((prev,curr) => {
  if (curr.id === "A1") {
    curr.value.shift()
  }
  return [...prev, curr]
}, [])

试试这个,它有效!

// ?. this is optional chaining for javascript operator

data.find(item => item.id === 'A1')?.value.shift();