检查NaN的每个数组值

时间:2014-01-26 19:01:44

标签: javascript jquery arrays

我有以下数组:

 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();
如果一个单位不存在,它显然不适用于某个单位。现在,我显然可以单独检查每个索引,但这不是很有效...有没有办法检查我的数组的每个值,如果它不存在,从数组中删除它?

由于

2 个答案:

答案 0 :(得分:2)

JsFiddle

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;
    }
}