0

quiero filtrar elementos de un Json por id pero me aparece error introducir la descripción de la imagen aquí

pero al momento de filtrar por nombre no me aparece ningún error

class Busqueda{
    
    constructor(){
        const url = "https://servexusinc.com/api/Model/getTestData"
        fetch(url)
    .then(response => response.json())
    .then(data => {

       
        this.json = data
        this.jsonBK = this.json
        this.onInit();
    })
    }
    onInit(){
        let cuerpo = document.getElementById("cuerpo");
        while(cuerpo.rows.length > 0){
            cuerpo.deleteRow(0);
        }
        this.json.forEach(persona => {
            let fila = cuerpo.insertRow(cuerpo.rows.length);
            fila.insertCell(0).innerHTML = persona.Id;
            fila.insertCell(1).innerHTML = persona.Name;
            fila.insertCell(2).innerHTML = persona.Description;
            fila.insertCell(3).innerHTML = persona.PartNumber;
            fila.insertCell(4).innerHTML = persona.LowFile;
            fila.insertCell(5).innerHTML = persona.Price;
            fila.insertCell(6).innerHTML = persona.ImgSrc;
            fila.insertCell(7).innerHTML = persona.Available;
            fila.insertCell(8).innerHTML = persona.Layers;
            fila.insertCell(9).innerHTML = persona.Options;
            fila.insertCell(10).innerHTML = persona.DefaultLayers;
            fila.insertCell(11).innerHTML = persona.MoveToZeroLayers;
            fila.insertCell(12).innerHTML = persona.Filters;
        })
    }
    buscar(id){
        let busqueda = document.getElementById(id).value;
        this.json = this.jsonBK;
        this.json = this.json.filter(persona => {
             return persona.Id.indexOf(busqueda) > -1;
             
           
        })
        this.onInit();
    }
}
let busqueda = new Busqueda();
let form = document.getElementById("busquedaForm");
form.addEventListener('submit', ()=>{
    busqueda.buscar('valor');
})
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Api Fetch</title>
</head>
<body>
    <div class="container">
        <form action="javascript:void(0);" id="busquedaForm"><input type="text" id="valor"><button>Enviar</button></form>
        <table>
            <thead>
                <tr>
                    <th>Id</th>
                    <th>Name</th>
                    <th>Description</th>
                    <th>Price</th>
                    <th>ImgSrc</th>
                    <th>Available</th>

                </tr>
            </thead>
            <tbody id="cuerpo"></tbody>
        </table>
    </div>
    <script src="main.js"></script>
</body>
</html>

Agradeazco su ayuda, no se si tengo que convertir en entero al momento de realizar el filtro en buscar()

Sebas Carrillo
  • 348
  • 2
  • 11

1 Answers1

-1

Id es un entero, debe ser convertido antes a string

p.ej:

String(persona.Id).indexOf(busqueda) > -1;

anlijudavid
  • 134
  • 1