2015-05-08 2 views
2

У меня есть два массива:Регистрация массивов на ключевых

applesToday= 
[ {product: "apple", period: 1433113200000, qty: -5}, 
    {product: "apple", period: 1435705200000, qty: -6 }, 
    {product: "apple", period: 1438383600000, qty: -8} 
] 

applesYesterday = 
[ {product: "apple", period: 1433113200000, qty: 10}, 
    {product: "apple", period: 1435705200000, qty: 12 }, 
    {product: "apple", period: 1438383600000, qty: 16} 
] 

Как совместить их на поле периода в:

self.applesTodayYesterday= 
[ {product: "apple", period: 1433113200000, qty: -5, qty1: 10}, 
    {product: "apple", period: 1435705200000, qty: -6, qty1: 12 }, 
    {product: "apple", period: 1438383600000, qty: -8, qty1: 16} 
] 

Я попытался погуглить левой присоединиться, присоединиться на ключ, но не смог найти ничего ... есть ли хорошая библиотека, которая это делает?

Период всегда будет первым днем ​​некоторого месяца и является уникальным ключом для каждого массива

EDIT:

Цели

Я использую нокаут JS выплюнуть таблицу тока и хотите предварительно форматировать данные, чтобы каждая строка была объектом в массиве. что предварительно отформатированные данные будут использоваться исключительно нокаутом для печати в DOM.

Период относится к тому, когда яблоко было выбрано из дерева

[product| period | quantity | daily change | weekly change ] [field 1 | field 2 ] 
[apple | apr-15 | 10  | -1   | -12   ] [8%  | 20%  ] 
[apple | may-15 | 12  | -3   | +14   ] [1%  | 11%  ] 
[TOTAL APPLES  | 22  | -4   | +2   ] [4%  | 43%  ] 
[carrot | apr-15 | 14  | -7   | -12   ] [8%  | 20%  ] 
[carrot | may-15 | 12  | +1   | +14   ] [1%  | 11%  ] 
[TOTAL CARROTS | 26  | -6   | +2   ] [4%  | 43%  ] 
+0

no, zip не будет работать. Это будет тонны разных периодов вокруг массива. – LucasSeveryn

+1

Почему бы не объединить количества? Например, период «1433113200000» имеет qty = 15. Зачем хранить эти количества отдельно? Если вы собираетесь держать их в отдельности, создайте количественный массив и поместите их туда. –

+0

Что вы пытаетесь сделать, выполнив это? Вы отслеживаете количество яблок, произведенных в определенный период? –

ответ

1

jsFiddle demo

Сделать объект с набором ключей в период вчерашних яблок, а затем использовать этот объект установить новое значение qty1 для сегодняшних яблок

var qtyMap = {}; 
applesYesterday.forEach(function(a){ 
qtyMap[a.period] = a.qty; 
}); 
applesToday.forEach(function(a){ 
a.qty1 = qtyMap[a.period]; 
}); 
+0

и что, если период повторяется в одном из массивов? (все еще ожидая этой информации, прежде чем я рекомендовал что-то подобное) – dandavis

+1

period - уникальный ключ – LucasSeveryn

+0

@dandavis - «Период» - это миллисекунда значения даты. Это дни. Маловероятные дни дублируются в вчерашнем/сегодняшнем наборе данных, подобных этому. Это также не показано в сообщении OP. –

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