如何使用Javascript过滤外部JSON数据并获取名字?
我只想得到输入字段中输入的名字数据。并呈现搜索名称的HTML如何使用Javascript过滤外部JSON数据并获取名字?,javascript,json,api,Javascript,Json,Api,我只想得到输入字段中输入的名字数据。并呈现搜索名称的HTML $.getJSON("https://www.hatchways.io/api/assessment/students", fetchData); var input = `<input type="text" placeholder="Search Here">`; function fetchData(data) { const profile = ` <div class="container
$.getJSON("https://www.hatchways.io/api/assessment/students", fetchData);
var input = `<input type="text" placeholder="Search Here">`;
function fetchData(data) {
const profile = ` <div class="container">
<p id="input">${input}</p>
${data.students
.map(
data =>
`
<div class="profile">
<img src="${data.pic}">
<div id="display">
<h1 id="name" style="font-size:50px">${data.firstName}</h1>
<p>Email: ${data.email}</p>
<p>Company: ${data.company}</p>
<p>Skill: ${data.skill}</p>
<p>Grades: ${data.grades}</p></div>
</div>`
)
.join(" ")}
</div> </div>`;
document.body.innerHTML = profile;
}
$.getJSON(“https://www.hatchways.io/api/assessment/students“,获取数据);
变量输入=``;
函数获取数据(数据){
常量配置文件=`
${input}
${data.students
.地图(
数据=>
`
${data.firstName}
电子邮件:${data.Email}
公司:${data.Company}
技能:${data.Skill}
等级:${data.Grades}
`
)
.join(“”)
`;
document.body.innerHTML=配置文件;
}
您只需要添加一个doSearch
函数来过滤搜索值。也许这不是解决问题的最佳实践,但它会给你解决问题的想法
var myData = null;
$.getJSON("https://www.hatchways.io/api/assessment/students", fetchData);
var input = `<input id="searchValue" type="text" placeholder="Search Here"><input type="button" value="search" onclick="doSearch()" />`;
function fetchData(data) {
myData = data;
renderAllHtml(data);
}
function doSearch() {
var searchValue = $('#searchValue').val();
if (searchValue) {
myData.students.forEach(item=>{
if (searchValue === item.firstName) {
renderFilterHtml(item);
}
})
}else {
renderAllHtml(myData);
}
}
function renderFilterHtml(data) {
const profile = ` <div class="container"><p id="input">${input}</p>
<div class="profile">
<img src="${data.pic}">
<div id="display">
<h1 id="name" style="font-size:50px">${data.firstName}</h1>
<p>Email: ${data.email}</p>
<p>Company: ${data.company}</p>
<p>Skill: ${data.skill}</p>
<p>Grades: ${data.grades}</p></div>
</div>
</div> </div>`;
document.body.innerHTML = profile;
$('#searchValue').val(data.firstName);
}
function renderAllHtml(data) {
const profile = ` <div class="container"><p id="input">${input}</p>
${data.students
.map(
data =>
`
<div class="profile">
<img src="${data.pic}">
<div id="display">
<h1 id="name" style="font-size:50px">${data.firstName}</h1>
<p>Email: ${data.email}</p>
<p>Company: ${data.company}</p>
<p>Skill: ${data.skill}</p>
<p>Grades: ${data.grades}</p></div>
</div>`
)
.join(" ")}
</div> </div>`;
document.body.innerHTML = profile;
}
var myData=null;
$.getJSON(“https://www.hatchways.io/api/assessment/students“,获取数据);
变量输入=``;
函数获取数据(数据){
myData=数据;
渲染HTML(数据);
}
函数doSearch(){
var searchValue=$('#searchValue').val();
如果(搜索值){
myData.students.forEach(项=>{
if(searchValue==item.firstName){
renderFilterHtml(项目);
}
})
}否则{
renderAllHtml(myData);
}
}
函数renderFilterHtml(数据){
const profile=`${input}
${data.firstName}
电子邮件:${data.Email}
公司:${data.Company}
技能:${data.Skill}
等级:${data.Grades}
`;
document.body.innerHTML=配置文件;
$('#searchValue').val(data.firstName);
}
函数renderAllHtml(数据){
const profile=`${input}
${data.students
.地图(
数据=>
`
${data.firstName}
电子邮件:${data.Email}
公司:${data.Company}
技能:${data.Skill}
等级:${data.Grades}
`
)
.join(“”)
`;
document.body.innerHTML=配置文件;
}
const allData=$.get(“https://www.hatchways.io/api/assessment/students")
//在这里定制您的搜索功能,也许可以使用正则表达式
功能匹配(a、b){
返回a.toLowerCase().startsWith(b.toLowerCase())
}
//这只是使用上面的搜索功能过滤数据
函数getData(搜索){
const data=allData.responseJSON&&allData.responseJSON.students | |[];
返回数据.reduce(
(acc,s)=>匹配(s.firstName,search)?(acc | |[])。concat(s):acc,
[]
);
}
//将其抽象为另一个函数以保持代码干净
函数renderStudent(数据){
返回`
${data.firstName}
电子邮件:${data.Email}
公司:${data.Company}
技能:${data.Skill}
等级:${data.Grades}
`;
}
//进行搜索时获取结果
//可以在('keyup',function…')上使用“$”('search')。以获得更好的响应,而不是等待
//供用户按ENTER键
$(“#搜索”)。更改(函数(e){
$('.results').html(getData($(e.currentTarget.val()).map(renderStudent.join())
})
请提供问题说明。什么有效/无效?此外,如果您不提供JSON/的一些示例,则很难提供任何答案。。。