Javascript 从Json筛选数组
下面的脚本从json文件中过滤数据,并在div中显示结果。我需要检查数组中过滤的数据,以显示更多的数据化结果 脚本Javascript 从Json筛选数组,javascript,jquery,ajax,Javascript,Jquery,Ajax,下面的脚本从json文件中过滤数据,并在div中显示结果。我需要检查数组中过滤的数据,以显示更多的数据化结果 脚本 $(function(){ $.getJSON("comuni.php", function(jsonData) { var jsonData = jsonData; var nomeComune = jQuery.map(jsonData, function(item, index) { return item.no
$(function(){
$.getJSON("comuni.php", function(jsonData) {
var jsonData = jsonData;
var nomeComune = jQuery.map(jsonData, function(item, index) {
return item.nomeComune;
});
$( "#comuni" ).autocomplete({
source: nomeComune,
minLength: 2,
select:function(event, ui){
var filterData = jsonData.filter(user => user.nomeComune == ui.item.value);
var userData = '<ul>';
userData += '<li>Il Comune di <strong>'+filterData[0]['nomeComune']+'</strong> <strong>('+filterData[0]['provincia']+')</strong></li>';
userData += '<li>è in presubentro dal <strong>'+filterData[0]['datasub']+'</strong></li>';
userData += '<li>è subentrato il <strong>'+filterData[0]['datapresub']+'</strong></li>';
userData += '</ul>';
$('#results').html(userData);
console.log(filterData[0]);
$('.results').slideDown( "slow", function() {
// Animation complete.
});
$(".results").click(function () {
$(this).slideUp( "slow", function() {
// Animation complete.
});
});
},
});
});
});
我需要检查datasub或datapresub的值是否为空,并相应地显示结果。例如:
如果值datasub为空,则结果应为:
var userData = '<ul>';
userData += '<li>Il Comune di <strong>'+filterData[0]['nomeComune']+'</strong> <strong>('+filterData[0]['provincia']+')</strong></li>';
userData += '<li>è in presubentro dal <strong>'+filterData[0]['datapresub']+'</strong></li>';
userData += '</ul>';
var userData = '<ul>';
userData += '<li>Il Comune di <strong>'+filterData[0]['nomeComune']+'</strong> <strong>('+filterData[0]['provincia']+')</strong></li>';
userData += '<li>è subentrato il <strong>'+filterData[0]['datasub']+'</strong></li>';
userData += '</ul>';
var userData='';
用户数据+='- Il-Comune di'+filterData[0]['nomeComune']+'('+filterData[0]['provincia']+')
- ;
用户数据+='
- èin presubentro dal'+filterData[0]['datapresub']+'
';
用户数据+='
';
如果值datapresub为空,则结果应为:
var userData = '<ul>';
userData += '<li>Il Comune di <strong>'+filterData[0]['nomeComune']+'</strong> <strong>('+filterData[0]['provincia']+')</strong></li>';
userData += '<li>è in presubentro dal <strong>'+filterData[0]['datapresub']+'</strong></li>';
userData += '</ul>';
var userData = '<ul>';
userData += '<li>Il Comune di <strong>'+filterData[0]['nomeComune']+'</strong> <strong>('+filterData[0]['provincia']+')</strong></li>';
userData += '<li>è subentrato il <strong>'+filterData[0]['datasub']+'</strong></li>';
userData += '</ul>';
var userData='';
用户数据+='- Il-Comune di'+filterData[0]['nomeComune']+'('+filterData[0]['provincia']+')
- ;
userData+='
- è子集中il'+filterData[0]['datasub']+'
';
用户数据+='
';
感谢您的帮助。谢谢如上所述,您可以执行以下操作。我添加了两个helper函数以使事情更整洁。只需将
filterData[0]
传递给函数getData()
,它将返回填充的无序列表
$(function(){
$.getJSON("comuni.php", function(jsonData) {
var jsonData = jsonData;
var nomeComune = jQuery.map(jsonData, function(item, index) {
return item.nomeComune;
});
$( "#comuni" ).autocomplete({
source: nomeComune,
minLength: 2,
select:function(event, ui){
var filterData = jsonData.filter(user => user.nomeComune == ui.item.value);
var userData = getData(filterData[0]); // <-- Changed here
$('#results').html(userData);
console.log(filterData[0]);
$('.results').slideDown( "slow", function() {
// Animation complete.
});
$(".results").click(function () {
$(this).slideUp( "slow", function() {
// Animation complete.
});
});
},
});
});
// Some helper functions
function getData(data) {
let returnValue = '<ul>';
if( existsAndNotEmpty(data['nomeComune']) && existsAndNotEmpty(data['provincia']) ) {
returnValue += '<li>Il Comune di <strong>'+data['nomeComune']+'</strong> <strong>('+data['provincia']+')</strong></li>';
}
if( existsAndNotEmpty(data['datasub']) ) {
returnValue += '<li>è subentrato il <strong>'+data['datasub']+'</strong></li>';
} else if ( existsAndNotEmpty(data['datapresub']) ) {
returnValue += '<li>è in presubentro dal <strong>'+data['datapresub']+'</strong></li>';
}
return returnValue + '</ul>';
}
function existsAndNotEmpty(value) {
if (typeof value != 'undefined' && value.length > 0) {
return true;
}
return false;
}
});
$(函数(){
$.getJSON(“comuni.php”,函数(jsonData){
var jsonData=jsonData;
var nomeComune=jQuery.map(jsonData,函数(项,索引){
返回项目.nomeComune;
});
$(“#comuni”)。自动完成({
资料来源:nomeComune,
最小长度:2,
选择:功能(事件、用户界面){
var filterData=jsonData.filter(user=>user.nomeComune==ui.item.value);
var userData=getData(filterData[0]);//0{
返回true;
}
返回false;
}
});
看起来非常简单,与ajax或jQuery无关。只需使用if(datasub){…}else{…}
…等等。很抱歉,这是非常基本的。仅供参考,您的代码会让您面临XSS攻击。切勿将文本数据直接连接到HTML上下文中。请使用innerText
,或者使用适当的模板引擎。