javascript - 附加外部 .json 的搜索结果

标签 javascript html

我正在尝试附加搜索外部 .json 的结果

我在这里附加了一个内部 javascript 数组的搜索结果。 (在 lodash 的帮助下)

$(document).ready(function () {  
        $('#dynam-now').click(function () {
         let searchString = $('#dynamId').val();

let result = _.filter(fruitChoices, function(object) {

return object.fruit.toLowerCase().indexOf(searchString.toLowerCase()) != -1;

});
        
        $('#ArrayD').html("");
 
for (var i = 0; i < result.length; i++) {
            $('#ArrayD').append(result[i].fruitname + " " + result[i].size + "  " + result[i].color + "<br>")
        };
    });
});   
   

var fruitChoices = [{
    "fruit": "apple",
    "fruitname" : "Apple",
    "size": "Large",
    "color": "Red"
  },
     {
    "fruit": "banana",
    "fruitname" : "Banana",
    "size": "Large",
    "color": "Yellow"
  },
  {
    "fruit": "orange",
    "fruitname" : "Orange",
    "size": "Large",
    "color": "Orange"
  },
    {
    "fruit": "strawberry",
    "fruitname" : "Strawberry",
    "size": "Small",
    "color": "Red"
    }];
#ArrayD {
            margin-top:25%;
                font-size: 18px;
         font-family: sans-serif;
        }
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
!DOCTYPE html>
<html>
<head>
    <title>
        Apple
    </title>
   

     <!-- Bootstrap CSS --> 
<link rel="stylesheet" href="https://aaronlilly.github.io/CDN/css/bootstrap.min.css"> 
<!-- Bootstrap JS --> 
<script src="https://aaronlilly.github.io/CDN/js/bootstrap.min.js"></script> 
<!-- Lodash --> 
<script src="https://aaronlilly.github.io/CDN/js/lodash.min.js"></script> 
    

   
</head>
<body>


    <br>
    <nav class="navbar navbar-inverse navbar-fixed-top">
        <div class="container">
            <div class="navbar-header">
           
           
            

                <input type="text" id="dynamId" size="37" placeholder="Search Field" style="margin-left: 50px;margin-top: 10px;padding-bottom: 5px;padding-top: 4px;">
                <div class="btn-group btn-group-toggle" data-toggle="buttons">
                   
                    <button class="btn btn-info my-2 my-sm-0" caption="search" id="dynam-now"> Search</button>
                    
                </div>

                
            </div>
        </div>
    </nav>
    <div class="container">
        <div class="row">

                   <div id="ArrayD"> </div>

我 future 的外部 .json 托管在这里 - https://aaronlilly.github.io/ApiExample/Apple4/apple4.json

但是写成-

{
   "results": 
  [
    {
    "fruit": "apple",
    "fruitname" : "Apple",
    "size": "Large",
    "color": "Red"
  },
     {
    "fruit": "banana",
    "fruitname" : "Banana",
    "size": "Large",
    "color": "Yellow"
  },
  {
    "fruit": "orange",
    "fruitname" : "Orange",
    "size": "Large",
    "color": "Orange"
  },
    {
    "fruit": "strawberry",
    "fruitname" : "Strawberry",
    "size": "Small",
    "color": "Red"
    } 
  ]
  }

我想附加过滤后的搜索结果。 我试过了

  $(document).ready(function ()  
            {
                    $.ajax
                        ({
                    method: "GET",
                    url: " https://aaronlilly.github.io/ApiExample/Apple4/apple4.json"
                         }).done(function(data) 

                               {$(document).ready(function () {  
        $('#dynam-now').click(function () {
         let searchString = $('#dynamId').val();

let result = _.filter(data, function(object) {

return object.result.toLowerCase().indexOf(searchString.toLowerCase()) != -1;

});
        console.log(results.fruit)
        $('#ArrayD').html("");

for (var i = 0; i < result.length; i++) {
            $('#ArrayD').append(result[i].fruitname + " " + results.result[i].size + "  " + result[i].color + "<br>")
        };
    });
});   
                                console.log(data)


                              });
            });

并得到诸如 - Cannot read property 'toLowerCase' of undefined 之类的错误

我试图纠正这个问题,但运气不佳。任何帮助将不胜感激。

最佳答案

我认为您的 filter 函数有问题。应该改为:

let result = _.filter(data.results, function(object) {
    // object = { fruit: 'orange', fruitname: 'ora'...}
    return object.fruitname.toLowerCase().indexOf(searchString.toLowerCase()) !== -1;

});

result 将是一组匹配的水果。

关于javascript - 附加外部 .json 的搜索结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56069384/

相关文章:

变量中匹配字符串内的 Javascript 循环

javascript - 当我在提交按钮级别停止传播时,为什么会触发表单提交事件?

android - 如何使用 Android TagHandler 读取自定义 html 标签属性

html - 如何在 Aptana Studio 3 中禁用 Html/CSS 代码辅助

location.hash 的 Javascript 正则表达式匹配

javascript - react 选择不识别默认值

javascript - 是否可以在另一个请求中有一个 Angular js $http 请求?

html - 使 iframe 和页脚发挥良好

javascript - 如何将长字符串变量从 JavaScript 传递到 PHP?

javascript - 使用javascript调整图像大小