2016-05-02 5 views
-4

Моего массива:Слияние дубликатов ключей массива в яваскрипта массива

{ { PID : [ '1' , '2' , '3' , ..] } , PID : [ '5' , '6' , '7' , '8' ....] , PID : .....} } 

Это один грязный массив и я хотел бы, чтобы мой результат в сочетании и чистый:

Результат:

{ {PID : [ '1' , '2' , '3' , .. , '5' , '6' , '7' and so on ] }} 

Мой код (ПСЕВДО):

var links = []; 

while(looping of a condition) 
{ 

links.push(function(){ 

var xArr = []; 
var yArr = []; 
$.each(function(){ 
xArr.push(somevalue); 
yArr.push(somevalue); 
}) 

return { PID : xArr , SKU : yArr }); 

} 

И эта сложная часть кода сгенерировала массив с несколькими массивами под ПИД-идентификатором дубликатов ключей.

Что я пробовал:

1.Pushing xArr и Yarr в Zarr и возвращения вместо этого.

У меня нет идеи, как это сделать, я согласен с тем, что я пока не очень разбираюсь в массивах javascript. Я просто прошу об этом пути, более или менее псевдо объяснения.

+3

'[...]' Мне нравится эта нота тайн! Что вы пробовали и почему это не сработало? прочитайте: [ask] –

+2

Ваш пример объекта, кажется, не имеет смысла, можете ли вы взглянуть на него и убедиться, что он правильный? Вы еще что-нибудь пробовали? – Marie

+0

Никто не может помочь вам без ожидаемого результата. – ahitt6345

ответ

1

Если вы изменяете, что массив с объектами вы можете использовать уменьшить

var ar = [{PID: ['1', '2', '3', ]}, {PID: ['5', '6', '7', '8']}]; 
 

 
ar = ar.reduce(function(a, el) { 
 
    a.PID = (a.PID || []).concat(el.PID); 
 
    return a 
 
}, {}) 
 

 
console.log(ar);

+0

Wow man отлично работает! большое спасибо . Если я могу спросить, можете ли вы объяснить этот фрагмент кода? – TheAnimatrix

+0

Вы можете узнать все об этом здесь https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce –

1

Входной элемент неправильно, я понял, что-то вроде основано на Reduce:

var arr = [ { PID : [ '1' , '2' , '3'] } , {PID : [ '5' , '6' , '7' , '8'] }]; 
 

 
var result = arr.reduce(function(previousValue, currentValue) { 
 
    return {PID: previousValue.PID.concat(currentValue.PID)}; 
 
}); 
 

 
document.write(JSON.stringify(result, 4, 4));

+0

Спасибо большое! но ответ Nenad Vracar был первым, поэтому я должен был его наградить, и в любом случае я не мог понять, как работает эта концепция. Что именно делает функция уменьшения? – TheAnimatrix

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