Tengo un objeto de matriz llamado valor completo. También tengo una cadena en una matriz llamada pushimg.
Usé la función de filtro aquí para escribir el código de modo que si hay un valor que no coincide entre el valor de fullvalue.name y la cadena de pushimg, se coloca en una variable llamada filtros.
Esto es lo que pretendía responder.
const fullvalue = [ {diaryItemId: 138, name: "growthLength", value: "1"} {diaryItemId: 141, name: "wormHeadSize", value: "2"} ] const pushedimg = ["growthLength"] const filters = fullvalue.filter((v) => !v.name.includes(pushedimg)) answer filters = [{diaryItemId: 141, name: "wormHeadSize", value: "2"}]Sin embargo, si el valor de pushimg tiene un valor más de wormHeadSize, los valores de fullvalue.name y pushimg coinciden, por lo que solo debe haber una matriz vacía en la variable de filtros, pero se ingresan dos valores.
como este código
const fullvalue = [ {diaryItemId: 138, name: "growthLength", value: "1"} {diaryItemId: 141, name: "wormHeadSize", value: "2"} ] const pushedimg = ["growthLength", "wormHeadSize"] const filters = fullvalue.filter((v) => !v.name.includes(pushedimg)) answer filters = [ {diaryItemId: 138, name: "growthLength", value: "1"} {diaryItemId: 141, name: "wormHeadSize", value: "2"} ] expected answer filters = []¿Cómo puedo arreglar mi código?
Si solo desea filtrar las coincidencias exactas, simplemente puede hacerlo
fullvalue.filter((v) => !pushedimg.includes(v.name))
pero si desea hacer una coincidencia parcial en el nombre, debe iterar sobre los elementos en pushedimg y verificar cada valor con v.name , luego, si se encuentra alguna coincidencia, utilícela para el filtrado. Puedes hacerlo así:
fullvalue.filter((v) => !pushedimg.some((pi) => v.name.includes(pi)))