2016-06-19 5 views
0

Так у меня есть этот объем с предустановленным оборудованием:Добавить значение объекта из другого массива объектов

$scope.equipment = [ 
    {slot: 7, colspan: 2, rowspan: 1}, 
    {slot: 0, colspan: 2, rowspan: 2}, 
    {slot: 10, colspan: 2, rowspan: 1}, 
    {slot: 8, colspan: 1, rowspan: 1}, 
    {slot: 9, colspan: 1, rowspan: 1}, 
    {slot: 6, colspan: 2, rowspan: 1}, 
    {slot: 17, colspan: 1, rowspan: 1}, 
    {slot: 18, colspan: 1, rowspan: 1}, 
    {slot: 1, colspan: 2, rowspan: 4}, 
    {slot: 19, colspan: 2, rowspan: 1}, 
    {slot: 4, colspan: 2, rowspan: 4}, 
    {slot: 5, colspan: 2, rowspan: 4}, 
    {slot: 14, colspan: 1, rowspan: 1}, 
    {slot: 15, colspan: 1, rowspan: 1}, 
    {slot: 2, colspan: 2, rowspan: 2}, 
    {slot: 16, colspan: 1, rowspan: 1}, 
    {slot: 15, colspan: 1, rowspan: 1}, 
    {slot: 3, colspan: 2, rowspan: 2} 
    ]; 

Как вы можете видеть, каждый слот имеет свой собственный Colspan и RowSpan.

Чем я имею оборудование элементы массива объектов:

$scope.equipmentItems = [ 
    { 
     "id": 282, 
     "upgrade": 15, 
     "bind": 1, 
     "slot": 0, 
     "name": "Archridium Headpiece (BL)" 
    }, 
    { 
     "id": 147, 
     "upgrade": 15, 
     "bind": 1, 
     "slot": 1, 
     "name": "Archridium Suit (BL)" 
    }, 
    { 
     "id": 192, 
     "upgrade": 15, 
     "bind": 1, 
     "slot": 2, 
     "name": "Archridium Hands (BL)" 
    }, 
    { 
     "id": 237, 
     "upgrade": 15, 
     "bind": 1, 
     "slot": 3, 
     "name": "Archridium Shoes (BL)" 
    }, 
    { 
     "id": 3706, 
     "upgrade": 0, 
     "bind": 0, 
     "slot": 4 
    }, 
    { 
     "id": 3707, 
     "upgrade": 0, 
     "bind": 0, 
     "slot": 5 
    }, 
    { 
     "id": 3622, 
     "upgrade": 0, 
     "bind": 0, 
     "slot": 6 
    }, 
    { 
     "id": 408, 
     "upgrade": 0, 
     "bind": 0, 
     "slot": 7, 
     "name": "Amulet Of Pain +7", 
     "description": "Protect you from enemy's attacks and to give more chance to do Critical Attacks. " 
    }, 
    { 
     "id": 3194, 
     "upgrade": 0, 
     "bind": 0, 
     "slot": 8, 
     "name": "Ring of Luck +3", 
     "description": "Increases your Critical Hit Rate." 
    }, 
    { 
     "id": 3193, 
     "upgrade": 0, 
     "bind": 0, 
     "slot": 9, 
     "name": "Critical Ring +3", 
     "description": "Increases your Critical Attack Damage." 
    }, 
    { 
     "id": 2371, 
     "upgrade": 0, 
     "bind": 1, 
     "slot": 10, 
     "name": "Astral Board Card - K Red Crystal Edition", 
     "description": "A mysterious card that summons Astral Board, one of the valuable Honorable Age's legacies and the essence of Core Technology. - K Red Crystal Edition_$4#(Right click to use) " 
    }, 
    { 
     "id": 3607, 
     "upgrade": 0, 
     "bind": 0, 
     "slot": 13 
    }, 
    { 
     "id": 3607, 
     "upgrade": 0, 
     "bind": 0, 
     "slot": 14 
    }, 
    : { 
     "id": 3604, 
     "upgrade": 0, 
     "bind": 0, 
     "slot": 15 
    }, 
    { 
     "id": 3604, 
     "upgrade": 0, 
     "bind": 0, 
     "slot": 16 
    }, 
    { 
     "id": 2568, 
     "upgrade": 0, 
     "bind": 4, 
     "slot": 17, 
     "name": "Leth Tyrant's Ring", 
     "description": "This ring contains the sealed power of Leth Tyrant, the extraordinary monster created by the Doctor. " 
    }, 
    { 
     "id": 3184, 
     "upgrade": 0, 
     "bind": 4, 
     "slot": 18, 
     "name": "Killian's Ring", 
     "description": "This generates powerful energy from the combination of Killian's Dark Energy and the grudge of the Black Cat, the Guardian of Hell." 
    }, 
    "{ 
     "id": 2228, 
     "upgrade": 0, 
     "bind": 0, 
     "slot": 19, 
     "name": "Belt of Damp +4", 
     "description": "This belt reduces damage from intensified sword or magic attacks. " 
    } 
]; 

Как вы можете видеть каждый ключевой объект в основном идентификатор слота.

Чем я использую этот код

 $scope.equipmentItems = _.sortBy($scope.equipmentItems, function(obj) { 
    return _.indexOf([7, 0, 10, 8, 9, 6, 17, 18, 1, 19, 4, 5, 14, 13, 2, 16, 15, 3], obj.slot); 
    }); 

для сортировки ключей оборудования элементов для моего конкретного заказа.

Во всяком случае, то, что я хочу, это самый производительный кусок кода, который может добавить значения Colspan и RowSpan от $ scope.equipment в $ scope.equipmentItems КУДА слот $ scope.equipment соответствует $ scope.equipmentItems слот.

+0

'equipmentItems' выглядит странно, что вы используете квадратные скобки вокруг списка пар ключ: значение. Разве это не фигурные скобки? –

+0

$ scope.equipmentItems не является допустимым массивом объектов. –

+0

'equipment.forEach (function (eq) {var item = equipmentItems [eq.slot]; item. Colspan = eq.colspan; item.rowspan = eq.rowspan;})' –

ответ

0

Вы можете использовать функции Array. Что-то вроде этого:

let merged = equipmentItems.map(item=>{ 
    item.anotherKey = equipment.find(it=> it.slot == item.slot); 
    return item; 
}); 

Если вам не нравится это, или вы не можете использовать те методы, которые вы можете использовать forEach

equipmentItems.forEach(function(item){ 
    equipment.forEach(function(item_){ 
     if(item.slot == item_.slot){ 
     item.someKey = item_; 
     } 
    }); 
}); 
+0

Неправильно, я не хочу класть слот, colspan, rowspan в слот, но как независимый ключ - значение после слота или раньше, что-то вроде этого. – allocen

+0

И я не хочу использовать эту версию сценария ecma. – allocen

+0

Вы можете мне помочь? – allocen

Смежные вопросы