quiero filtrar elementos de un Json por id pero me aparece error
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()