Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/429.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.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 按数据的一部分筛选数组_Javascript_Html_Json - Fatal编程技术网

Javascript 按数据的一部分筛选数组

Javascript 按数据的一部分筛选数组,javascript,html,json,Javascript,Html,Json,我想做一个与乡村和城镇相关的选择 国家数据是 var arr_country=[ {"id": 100,"name":"台北市"}, {"id": 200,"name":"新北市"}, {"id": 300,"name":"桃園市"}, {"id": 400,"name":"新竹縣"}, {"id": 500,"name":"台中市"} ] var arr_town=[ {"id": 10011,"name":"中正區"}, {"id": 10022,"name

我想做一个与乡村和城镇相关的选择

国家数据是

var arr_country=[
  {"id": 100,"name":"台北市"},
  {"id": 200,"name":"新北市"},
  {"id": 300,"name":"桃園市"},
  {"id": 400,"name":"新竹縣"},
  {"id": 500,"name":"台中市"}
  ]

var arr_town=[
  {"id": 10011,"name":"中正區"},
  {"id": 10022,"name":"信義區"},
  {"id": 20011,"name":"板橋區"},
  {"id": 20022,"name":"永和區"},
  {"id": 30011,"name":"龜山區"},
  {"id": 30022,"name":"八德區"},
  {"id": 40011,"name":"新豐鄉"},
  {"id": 40022,"name":"湖口區"},
  {"id": 50011,"name":"北屯區"},
  {"id": 50022,"name":"大雅區"}
]
HTML代码是

<select id="country"></select>
<select id="town"></select>

我无法更改JSON数据格式

这两个数据的关系是

国家id=XXX

城镇id=XXXOO

如何筛选匹配数组以动态插入选项以进行选择

我试着写些剧本

var counties_option = '';

for (var i = 0; i < arr_country.length; i++) {
counties_option += '<option value="' + arr_country[i].id + '">' + arr_country[i].name + '</option>';
}

$('#country')
.append(counties_option)
.on('change',function(){
$('#town').empty();

var selected_counties=this.value
var filtered_arr=arr_town.filter(function(item){
return item.id==selected_counties;
});

var town_option = '';
for (var j = 0; j < filtered_arr.length; j++) {
town_option += '<option value="' + filtered_arr[j].id + '">' + filtered_arr[j].name + '</option>';
}

$('#town').append(town_option)}).trigger('change');
var\u选项=“”;
对于(变量i=0;i

这是我的JSFIDLE实践=>

在您发布的尝试中,问题似乎在于生成
过滤的\u arr
的方式。要获取给定国家的城镇,您可能需要尝试以下方法:

功能获取(国家/地区){
返回arr_town.过滤器(功能(town){
返回数学楼层(town.id/100)==country.id;
});
}
瓦尔阿鲁国家=[
{“id”:100,“名称”:”台北市"},
{“id”:200,“名称”:”新北市"},
{“id”:300,“名称”:”桃園市"},
{“id”:400,“名称”:”新竹縣"},
{“id”:500,“名称”:”台中市"}
];
瓦尔阿鲁镇=[
{“id”:10011,“名称”:中正區"},
{“id”:10022,“名称”:信義區"},
{“id”:20011,“名称”:板橋區"},
{“id”:20022,“姓名”:永和區"},
{“id”:30011,“名称”:龜山區"},
{“id”:30022,“名称”:八德區"},
{“id”:40011,“名称”:新豐鄉"},
{“id”:40022,“名称”:湖口區"},
{“id”:50011,“名称”:北屯區"},
{“id”:50022,“名称”:大雅區"}
];
console.log(getdown(arr_country[0]);
console.log(getdown(arr_country[1]);

log(getTowns(arr_country[2]);
像这样更新您的函数

var filtered_arr=arr_town.filter(function(item){
    return item.id.toString().substring(0,3)==selected_counties;         
  });

这是有效的,我也更新了你的JSFIDLE。

发布的问题似乎根本不包括解决问题的方法。StackOverflow希望你这样做,因为你的尝试有助于我们更好地了解你想要什么。请编辑问题以显示你已经尝试了什么,以便说明你在.For mor中遇到的具体问题e信息,请查看并获取。请编辑您的问题以显示您的代码。最好使用
Math.floor
而不是
parseInt
。parseInt用于解析字符串。实际上,国家id和城镇id不会是100/200/300,根据政府数据,id将是10008/10009/64000…等等,因此,我认为使用parseInt或Math.floor方法不是一个好的解决方法…@PaiYaWen什么是
Math.floor(10008/100)