我希望我正在解释这项权利;例如,我想要匹配值的user_id:id:在返回的jSON数组/对象中,如下所示...
[{"user_id":"1","value":"92056,92054,92018"},{"user_id":"3","value":"92056"},
{"user_id":"2","value":"Massachusetts, Wyoming, Tennessee"},
{"user_id":"5","value":"California"},
{"user_id":"9","value":"New Mexico, Mississippi, Washington"},
{"user_id":"11","value":"Nevada"},{"user_id":"8","value":"Oklahoma, Louisiana"},
{"user_id":"6","value":"Montana, Oregon"},
{"user_id":"10","value":"Virginia, Illinois"}]
例如,如果我的来源是92056,则我想获得“ 1”,因为我的92056的user_id是“ 1”。
如果是新墨西哥州,我想输入“ 9”,依此类推。
该值可以包含几百个邮政编码,因此,我想一种快速搜索这些值或类似值的方法,因为它将永远不会重复。每个user_id将具有多个唯一的区域或“值”。
如果出现这种情况,我将使用PHP从数据库中提取数据,然后将其传递到JavaScript变量中(在Wordpress中)。
<?php
global $wpdb;
$fullPHP = $wpdb->get_results("SELECT user_id, value FROM " . "refer_cimy_uef_data;");
?>
var phpreps = JSON.stringify(<?php echo json_encode($fullPHP); ?>);
$("#phpoutput").html(phpreps);
最佳答案
您对自己太难了。将“值”属性转换为数组,然后再将其发送到浏览器客户端,只需在每个值数组上使用indexOf来检查搜索查询是否存在。在下面的代码中,底部的搜索功能非常简单。第一部分是一些客户端转换代码,用于将您的值属性转换为适当的数组。
//pre-process the data to put 'value' into an array. This would be better done from the server in the initial response.
var input = (function(){
var arr = [
{"user_id":"1","value":"92056,92054,92018"},{"user_id":"3","value":"92056"},
{"user_id":"2","value":"Massachusetts, Wyoming, Tennessee"},
{"user_id":"5","value":"California"},
{"user_id":"9","value":"New Mexico, Mississippi, Washington"},
{"user_id":"11","value":"Nevada"},
{"user_id":"8","value":"Oklahoma, Louisiana"},
{"user_id":"6","value":"Montana, Oregon"},
{"user_id":"10","value":"Virginia, Illinois"}
];
arr.forEach(function(item, index){ //remove extra space from some splitting
arr[index].value = arr[index].value.replace(/,\s/gi,',').split(',');
});
return arr;
})();
var search = function(val){
for(var i=0, len=input.length; i<len; i++){
if( input[i].value.indexOf(val) > -1 ) return input[i].user_id;
}
return null;
}
console.log( search('New Mexico') );