【问题标题】:How to delete object from array of objects in array of objects javascript by index如何按索引从对象数组javascript中的对象数组中删除对象
【发布时间】:2021-07-02 08:08:46
【问题描述】:

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

我想从数组中删除第一个对象,其中对象 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);
   }

【问题讨论】:

  • 是的,你会这样做...如果delIndex为0,则删除第一个,1删除第二个...delIndex如何设置?
  • 如果 deleteId 和 delIndex 设置正确,这应该可以工作。
  • 为什么这个问题被标记为react-native?你在使用dataarray1 吗?如果是这样,您可能不想使用splice(),因为不应改变状态,而只能重新分配。
  • 很抱歉,但问题是什么?问题是什么? “我试过这个......”好的,代码对我来说看起来不错 -> 问题解决了吗?否则请解释你有什么问题。什么是不起作用?也许它怎么不工作?您得到的结果与您期望的结果有何不同。

标签: javascript arrays react-native array-splice


【解决方案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);

【讨论】:

    【解决方案2】:

    你可以试试这样的:

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

    【讨论】:

      【解决方案3】:

      试试这个,它有效!

      // ?. this is optional chaining for javascript operator
      
      data.find(item => item.id === 'A1')?.value.shift();
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-01-16
        • 2020-12-07
        • 2022-01-19
        • 2015-07-22
        • 2018-08-15
        • 1970-01-01
        • 2016-05-19
        • 1970-01-01
        相关资源
        最近更新 更多