我有以下数组:
var indexes = {
'spear' : $('#commands_table th:has(img[src*="unit_spear"])').index(),
'sword' : $('#commands_table th:has(img[src*="unit_sword"])').index(),
'axe' : $('#commands_table th:has(img[src*="unit_axe"])').index(),
'archer' : $('#commands_table th:has(img[src*="unit_archer"])').index(),
'spy' : $('#commands_table th:has(img[src*="unit_spy"])').index(),
'light' : $('#commands_table th:has(img[src*="unit_light"])').index(),
'marcher' : $('#commands_table th:has(img[src*="unit_marcher"])').index(),
'heavy' : $('#commands_table th:has(img[src*="unit_heavy"])').index(),
'ram' : $('#commands_table th:has(img[src*="unit_ram"])').index(),
'cata' : $('#commands_table th:has(img[src*="unit_catapult"])').index(),
'noble' : $('#commands_table th:has(img[src*="unit_noble"])').index(),
'knight' : $('#commands_table th:has(img[src*="unit_knight"])').index(),
};
有时它会找到某个名字,有时则不会。我想做的是:
var numberspear = $(this).closest('tr').children().eq(indexes[spear]).text();
如果一个单位不存在,它显然不适用于某个单位。现在,我显然可以单独检查每个索引,但这不是很有效...有没有办法检查我的数组的每个值,如果它不存在,从数组中删除它?
由于
答案 0 :(得分:2)
for (var key in indexes) {
if (isNaN(indexes[key]))
delete(indexes[key]);
}
答案 1 :(得分:1)
您可以自动填充对象,只是不添加未找到的项目。
var items = ['spear', 'sword', 'axe', 'archer',
'spy', 'light', 'marcher', 'heavy',
'ram', 'cata', 'noble', 'knight'],
indexes = {},
headers = $('#commands_table th');
for (i=var i = 0, len = items.length; i < len; i+++){
var item = items[i],
index = headers.filter(':has(img[src*="unit_'+ item +'"])').index();
if (!isNAN(index)){
indexes[item] = index;
}
}