Primero, no soy un hablante de inglés. Soy un desarrollador principiante. Por favor, comprenda si mi inglés es incómodo.
Estoy creando una aplicación de chat en tiempo real y filtrando los mensajes de la persona que bloqueé. Así que estoy filtrando el número objetivo de la persona bloqueada en todo el mensaje. Pero este proceso de filtrado no está funcionando bien. ¿Me puedes ayudar?
como esto
Message : [{…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}] {type: 'message', idx: 1313231, name: '%E3%85%81%E3%84%B4%E3%85%87%E3%85%81', message: 'hello'}https://i.stack.imgur.com/vMur3.png
idx es el objetivo idx del usuario está bloqueado idx
blockList [{…}] > 0: {idx: 1321, target: 2231, timestamp: 1644561250499} length: 1 [[Prototype]]: Array(0)https://i.stack.imgur.com/eLnYQ.png
Así que quiero filtrar ese mensaje si blockList.target !== enterMsg.idx pero no funciona, así que probé algunas formas de hacerlo
const blockMap = blockList.map((el) => el.target) const filterdMessage = () => {enterMsg.filter((msg)=> { const realfiltered = enterMsg.filter((el) => { blockMap.map((bl) => { return el.idx !== bl }) }) })};pero es una matriz vacía ¿Cómo puedo solucionarlo?
Diría que hay un malentendido de las funciones de matriz: tal vez debería consultar los documentos;)
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects /matriz/mapa
Luego, desea filtrar una matriz (la lista de mensajes) y la función de filtro debe devolver un valor booleano, por lo que probablemente desee algo así:
const filterdMessage = enterMsg.filter((msg)=> { return !blockList.some((bl) => { return msg.idx === bl.target }) })Lo que hacemos aquí es:
usamos la función 'some' que devolverá verdadero si se encuentra un bloque coincidente, y dado que no queremos bloques coincidentes, negamos la condición