[英]Loop through 2 arrays in jquery and combine
我有2个数组,一个数组包含城市,另一个数组包含ID。。。我想循环两个,然后输出一些HTML
现在,我只循环城市,然后将一些HTML附加到以下内容:
if ($jq(".area").length > 0) {
var region = $jq(".hiddenFieldRegion").val();
var cityIDs = $jq(".hiddenFieldChosenAreas").val();
var strcities = $jq(".hiddenFieldChosenCities").val();
//var cities = strcities.split('|');
//Set region to be marked
if (region) {
$jq(".mapdk").attr("class", region);
}
//Appending to searchform
if (strcities) {
$jq.each(strcities.toString().split("|"), function (k, v) {
var v = v.split("|");
$jq("<option selected />").text(v[0]).appendTo("select.chosen-cities");
});
}
}
我想在im附加到searchform的地方添加一个属性值,并带有cityIDs数组中的ID ...
所以我得到一些HTML,如:
<option value="XXX">CityName</option>
那可能吗?
假设两个数组的顺序相同,则可以使用每个函数的索引参数( k
):
if (strcities) {
var aCityIDs = cityIDs.split("|");
$jq.each(strcities.toString().split("|"), function (k, v) {
var v = v.split("|");
var id = aCityIDs[k];
$jq("<option selected value='"+id+"' />").text(v[0]).appendTo("select.chosen-cities");
});
}
假设您的城市ID和城市名称以相同的方式排序,则可以通过数组中的此索引访问每个名称/ ID:
var cityIDs = $jq(".hiddenFieldChosenAreas").val();
var strcities = $jq(".hiddenFieldChosenCities").val();
var cityIDs_array = cityIds.split("|");
var strcities_array = strcities.split("|");
....
if (strcities) {
$jq.each(strcities_array, function (k, v) {
//var v = v.split("|"); Unnecessary if strcities is like "city1|city2|city3"
$jq("<option value='"+cityIDs_array[k]+"' />").text(v).appendTo("select.chosen-cities");
});
}
这样,您可以访问循环中的每个城市ID。
但是我认为您应该将城市名称和城市ID存储在同一字符串中。 例如"city1:1|city2:2|city3:3"
。 然后,使用split
函数,您将获得id和name。
另一个例子:
var strict = ('aaa|eeee|dddd').split('|');
var id = ('1|2|3').split('|');
$.each(strict, function (k) {
$("<option selected />").text(strict[k]).appendTo("select.chosen-cities").attr('value',id[k]);
});
如果两个数组在索引方面彼此相等,这很容易-遍历一个数组,然后在另一个数组中以相同的索引查找值。
//simulate environment
var strcities = 'one|two|three',
cityIDs = '1|2|3';
//main code
var ids = cityIDs.split('|');
$.each(strcities.toString().split("|"), function (index, val) {
var opt = $("<option />", {value: ids[index], text: val}).appendTo("select.chosen-cities");
/* if (index == 2) opt.prop('selected', 'selected'); /*
});
注意事项:
|
一次在$.each
,再一次在其中。 由于这是不合逻辑的(任何|
在第一次拆分后都会消失),因此我将其删除。 selected
添加到每个选项。 如果仅希望选择第一个选项,则无需添加任何内容。如果希望选择特定的选项,请参阅我注释掉的行,该行选择第三个元素。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.