2016-04-29 3 views
0

Я пытаюсь выполнить сопоставление между объектом объектов (A) и массивом объектов (B).Попытка выполнить сопоставление между значением объекта объектов в массив объектов

Каждый объект в объекте объектов имеет ПИД. Каждый объект в массиве объектов имеет PID. Я пытаюсь сопоставить A и B, чтобы получить занятие от A, а затем добавить занятие к каждому объекту в B. Итак, я пытаюсь получить PID и занятие в одном. Можно ли это сделать?

Итак, вот то, что может выглядеть следующим образом:

{ 
    emp1: { 
    PID: 2430 
    Occupation: Welder 
    }, 
    emp2: { 
    PID: 432, 
    Occupation: Electrician 
    } 
} 

и B:

[ 
    { 
    PID: 432 
    }, 
    { 
    PID: 2430 
    } 
] 

Может ли это быть легко сделать, используя нечто вроде lodash библиотеки?

+0

A является недопустимым форматом JSON – Dalorzo

+2

@ Dalorzo и кто говорил «бой json? его все еще действительный объект JS – messerbill

+0

Я исправил его извините – user1354934

ответ

1

Вам нужно будет запустить цикл внутри цикла, чтобы соответствовать элементам от B до A (или наоборот), что довольно дорого. Было бы намного проще, если бы вы могли изменить структуру, скажем, А.

A = { 
    2430: { 
     name: "John", 
     occupation: "Welder" 
    }, 
    432: { 
     name: "John", 
     occupation: "Electrician" 
    } 
} 

Затем вы можете получить доступ к данным в A так: A[2430]

Тогда ваш код может выглядеть так:

B = B.map(function(el) { 
    return { 
     PID: el.PID, 
     occupation: A[el.PID].occupation 
    } 
}); 
console.log(B); 

У вас есть всего одна петля. Также вы получите гораздо более быстрый доступ к данным от A в будущем.

+0

большое спасибо! позвольте мне сделать это. – user1354934

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