Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Javascript过滤外部JSON数据并获取名字?_Javascript_Json_Api - Fatal编程技术网

如何使用Javascript过滤外部JSON数据并获取名字?

如何使用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

我只想得到输入字段中输入的名字数据。并呈现搜索名称的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">
      <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/的一些示例,则很难提供任何答案。。。