gpt4 book ai didi

javascript - 如何在 JSON 文件中搜索?

转载 作者:行者123 更新时间:2023-11-29 21:38:03 30 4
gpt4 key购买 nike

我如何创建一个搜索表单来搜索 JSON 文件中输入的术语?

因此,如果搜索词等于位置对象中的标题,它应该返回该对象信息。如果不匹配,则向用户反馈未找到任何项目

我创建了一个搜索输入:

    <form action="" method="get">               
<input id="search" type="text" placeholder="Search term">
<input type="submit" class="button">
</form>

我的 JSON 看起来像这样:

{
"title": "Locations",
"locations": [
{
"title": "New York",
"url": "api/newyork.js"
},{
"title": "Dubai",
"url": "api/dubai.js"
},{
"title": "Netherlands",
"url": "api/netherlands.js"
},{
"title": "Lanzarote",
"url": "api/lanzarote.js"
},{
"title": "Italy",
"url": "api/italy.js"
}

]
}

更新:

我想出了以下,使用 jQuery:

$("#search").change(function() { 
var arrival = $(this).val();

$.getJSON( "api/videoData.js")
.done(function(data) {
// update your ui here
console.dir(data.pages);
var dataArr = data.pages;

// Iterate over each element in the array
for (var i = 0; i < dataArr.length; i++){
// look for the entry with a matching `code` value
if (dataArr[i].title == arrival){
// we found it
console.log(dataArr[i].title);
} else {
console.log('Houston, we have a problem');
}
}

}).fail(function(data) {
// handle error here
console.log('no results found');
});

});

这是可行的,只是输入的内容应该与 JSON 中存储的完全一致。因此,当您搜索“Italy”并使用小写字母时,它不会找到该对象。当您搜索例如:ne 时,它也不会给出任何条目。我想将荷兰和纽约作为搜索结果。

最佳答案

这是一个片段,演示了如何完成查找。它只加载一次 JSON。我已经包含了 JSON 请求失败时的测试数据,它将在本演示中出现。输入值的每次更改都会在 input 下方的 div 中显示一个简短的匹配列表。不包括提交按钮,因为搜索是即时的。

试一试。

// testData is defined for demo only. Can be removed
var testData = [
{
"title": "New York",
"url": "api/newyork.js"
},{
"title": "Dubai",
"url": "api/dubai.js"
},{
"title": "Netherlands",
"url": "api/netherlands.js"
},{
"title": "Lanzarote",
"url": "api/lanzarote.js"
},{
"title": "Italy",
"url": "api/italy.js"
}
];
// Variable to hold the locations
var dataArr = {};
// Load the locations once, on page-load.
$(function() {
$.getJSON( "api/videoData.js").done(function(data) {
window.dataArr = data.pages;
}).fail(function(data) {
console.log('no results found');
window.dataArr = testData; // remove this line in non-demo mode
});
});
// Respond to any input change, and show first few matches
$("#search").on('keypress keyup change input', function() {
var arrival = $(this).val().toLowerCase();
$('#matches').text(!arrival.length ? '' :
dataArr.filter(function(place) {
// look for the entry with a matching `code` value
return (place.title.toLowerCase().indexOf(arrival) !== -1);
}).map(function(place) {
// get titles of matches
return place.title;
}).join('\n')); // create one text with a line per matched title
});
// submit button is not needed really
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<input id="search" type="text" placeholder="Search term">
<div id="matches" style="height:70px; overflow-y:hidden; white-space:pre"></div>

关于javascript - 如何在 JSON 文件中搜索?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34255181/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com