Digamos que tengo una matriz que se ve así:
[{"id":23,"site_id":13, "name":"Test 1","date":"2019-01-26T11:02:18.5661283","category":"some cats"}, {"id":151,"site_id":15, "name":"Test 2","date":"2018-11-04T10:50:53.1756567","category":"some cats"}]Necesito buscar por site_id en esta matriz y mostrar los encontrados:
así que hice algo como esto que no funciona:
var siteID = 13; $.each(myArray.filter( function (el) { return el.site_id !== siteID ; }), function( index, value ) { var fo = '<p>'+el.name+'</p>'; $('.forms').append(fo); });¿Alguien puede aconsejarme sobre esto?
Simplemente puede recorrer los datos para realizar esta tarea.
Considere el siguiente código: -
Puede agregar una declaración de interrupción si está seguro de que el site_id es único en el objeto de los datos.
let siteId = 13; let dataRows = [ {"id":23,"site_id":13, "name":"Test 1","date":"2019-01-26T11:02:18.5661283","category":"some cats"}, {"id":151,"site_id":15, "name":"Test 2","date":"2018-11-04T10:50:53.1756567","category":"some cats"} ]; let formElements = ''; for(let data of dataRows){ if(data.site_id == siteId){ formElements += '<p>'+data.name+'</p>'; } } $('.forms').append(formElements); <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script> <div class="forms"></div>Simplemente puede usar Array.filter() como se muestra a continuación:
filteredArray = myArray.filter((a)=> {return a.site_id === siteID}) Aquí, estamos llamando a .filter() en myArray y si la condición dentro de la función se mantiene verdadera, ese elemento se devuelve; de lo contrario, se elimina.
Salidas como -
Object { id: 23, site_id: 13, name: "Test 1", … } ya que solo el site_id de este elemento coincidía con el proporcionado.
Más simple de filtrar y luego mapear. Queremos actualizar el DOM de una sola vez
const arr = [{"id":23,"site_id":13, "name":"Test 1","date":"2019-01-26T11:02:18.5661283","category":"some cats"}, {"id":151,"site_id":15, "name":"Test 2","date":"2018-11-04T10:50:53.1756567","category":"some cats"}] const mySiteId = 13; $('.forms').append( arr .filter(({site_id}) => site_id !== mySiteId) .map(({name}) => `<p>${name}</p>`).join("") ) <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script> <div class="forms"></div>