使用数组创建新数组

时间:2014-01-27 00:24:24

标签: jquery arrays object

http://jsfiddle.net/Ug4F4/1/

   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(),
            'snob' : $('#commands_table th:has(img[src*="unit_snob"])').index(),
            'knight' : $('#commands_table th:has(img[src*="unit_knight"])').index(),

            };


     for (var key in indexes) {
     if (indexes[key] < 0)
    delete(indexes[key]);
    }

json stringify alert:

   {"spear":3,"sword":4,"axe":5,"spy":6,"light":7,"heavy":8,"ram":9,"cata":10,"snob":11}

我现在拥有了所有索引,我需要找到每个单元的每个匹配值(按索引)。

    var matchingvalues = ['spear', 'sword', 'axe', 'archer',
         'spy', 'light', 'marcher', 'heavy',
         'ram', 'cata', 'noble', 'knight'],


 var matchingvalues = bevelnaam.closest('tr').find('td').eq(indexes).text();

需要成为什么:

    var matchingvalues = ['spear' : numberofspear
   'sword' : numberofsword' ]

非常感谢任何帮助(以及对它的一些解释:))

编辑:添加小提琴。你可以看到每个tr看起来都一样。我试图在每个tr的右侧找到所有数字并将它们放入一个数组中(我将使用这些值做一些事情,但那些并不相关)。您可以在列的顶部看到这些图像,这些图像是单位(矛,剑等),我需要每个tr(在我的每个tr函数中)的每个单位的值,在某种数组中。 / p>

1 个答案:

答案 0 :(得分:0)

为了实现这一点,你需要循环matchingvalues并执行一个函数,然后将结果存储在一个新对象中。

由于您已经在使用jQuery,因此您可能需要查看jQuery .map()或仅使用forEach MDN - forEach()

你可以这样做:

var mapped_matching_values = {};

matchingvalues.forEach(function(elem, index){
    //extract the key name (i.e. spear, sword, etc)
    var key_name = matchingvalues[index];

    //extract the text 
    var text = bevelnaam.closest('tr').find('td').eq(indexes).text();

    //insert into object with processed values
    mapped_matching_values[key_name] = text;
});

//now use mapped_matching_values