Intentando eliminar una matriz completa si está dentro de mis datos si contiene un valor determinado.
¿Cuál sería el mejor enfoque para este problema?
data = [['true', 'visiting-today', 'DVM-Wiessman','J-001'], ['false', 'visiting-tommorrow', 'DVM-Stevens','K-001'], ['true', 'visiting-tommorrow', 'DVM-Stevens','Z-001'], ['false', 'visiting-tommorrow', 'DVM-Kon','J-001']] var del_value = 'J-001'; function remove_from_list(list) { for( var i = 0; i < list.length; i++) { for( var j =0; j < Object.keys(list[i]).length.length; j++) { if(del_value == list[i][j]) { list.splice(list[i], 1); } } } return list; }salida real
data = [['true', 'visiting-today', 'DVM-Wiessman','J-001'], ['false', 'visiting-tommorrow', 'DVM-Stevens','K-001'], ['true', 'visiting-tommorrow', 'DVM-Stevens','Z-001'], ['false', 'visiting-tommorrow', 'DVM-Kon','J-001']] resultado deseado: para eliminar todas las matrices que tienen el valor 'J-001'
data = [['false', 'visiting-tommorrow', 'DVM-Stevens','K-001'], ['true', 'visiting-tommorrow', 'DVM-Stevens','Z-001']] const data = [['true', 'visiting-today', 'DVM-Wiessman','J-001'], ['false', 'visiting-tommorrow', 'DVM-Stevens','K-001'], ['true', 'visiting-tommorrow', 'DVM-Stevens','Z-001'], ['false', 'visiting-tommorrow', 'DVM-Kon','J-001']]; const input = "J-001"; // Approach // Filter element (use filter) who has not given input (use not includes for this) const result = data.filter(dat => !dat.includes(input)); console.log(result);Puede usar array#filter y array#includes para filtrar según la matriz sin incluir J-001 .
const data = [['true', 'visiting-today', 'DVM-Wiessman','J-001'], ['false', 'visiting-tommorrow', 'DVM-Stevens','K-001'], ['true', 'visiting-tommorrow', 'DVM-Stevens','Z-001'], ['false', 'visiting-tommorrow', 'DVM-Kon','J-001']], result = data.filter(arr => !arr.includes('J-001')); console.log(result); .as-console-wrapper { max-height: 100% !important; top: 0; }Si la posición del elemento está fijada para ser tercero. Luego puede usar comparar directamente el valor en ese índice.
const data = [['true', 'visiting-today', 'DVM-Wiessman','J-001'], ['false', 'visiting-tommorrow', 'DVM-Stevens','K-001'], ['true', 'visiting-tommorrow', 'DVM-Stevens','Z-001'], ['false', 'visiting-tommorrow', 'DVM-Kon','J-001']], result = data.filter(arr => arr[3] !== 'J-001'); console.log(result); .as-console-wrapper { max-height: 100% !important; top: 0; }Enfoque alternativo usando Array.filter() y Array.find() .
data = [['true', 'visiting-today', 'DVM-Wiessman','J-001'], ['false', 'visiting-tommorrow', 'DVM-Stevens','K-001'], ['true', 'visiting-tommorrow', 'DVM-Stevens','Z-001'], ['false', 'visiting-tommorrow', 'DVM-Kon','J-001']]; function removeFromList(list, delValue) { return list.filter(arr => !arr.find(value => value === delValue)); } console.log(removeFromList(data, 'J-001'));