2017-02-10 3 views
-2

Есть ли способ отсортировать этот массив объектов? :Сплит массив объекта путем циклирования по ключам и значениям

[ RowDataPacket { new_path: '1481640456051.natedogg.jpg' }, 
RowDataPacket { new_path: '1486655771055.natedogg.jpg' }, 
RowDataPacket { tag_id: 170 }, 
RowDataPacket { tag_id: 171 }, 
RowDataPacket { tag_id: 169 }, 
RowDataPacket { tag_id: 172 }, 
RowDataPacket { id: 1, tags: 'myfirstTag' }, 
RowDataPacket { id: 4, tags: 'wrong' }, 
RowDataPacket { id: 31, tags: 'premier' }, 
RowDataPacket { id: 169, tags: 'west' }, 
RowDataPacket { id: 170, tags: 'WOWW' }, 
RowDataPacket { id: 171, tags: 'liopppp' }, 
RowDataPacket { id: 172, tags: 'daftpunk' }, 
RowDataPacket { id: 173, tags: 'dfgdfg' }, 
RowDataPacket { id: 174, tags: 'sport' }, 
RowDataPacket { id: 175, tags: 'hhdhd' }, 
RowDataPacket { id: 176, tags: 'sdfsdfee' } ] 

Я хочу иметь два массива, первый со всем до последнего tag_id и новый массив с внутренней id и tags.

Я не знаю, как правильно использовать карту.

+0

Этот массив недействителен. –

+0

что вы имеете в виду .. не могли бы вы объяснить подробнее .. какое ваше ожидание? – challenger

+0

@challenger Каждый элемент должен храниться внутри отдельного объекта - '{RowDataPacket: {tag_id: 170}}' или просто удалять эти 'RowDataPacket'. –

ответ

2

Вы можете использовать массив filter метод, но вы должны исправить синтаксис массива:

var arr = [ { new_path: '1481640456051.natedogg.jpg' }, 
 
{ new_path: '1486655771055.natedogg.jpg' }, 
 
{ tag_id: 170 }, 
 
{ tag_id: 171 }, 
 
{ tag_id: 169 }, 
 
{ tag_id: 172 }, 
 
{ id: 1, tags: 'myfirstTag' }, 
 
{ id: 4, tags: 'wrong' }, 
 
{ id: 31, tags: 'premier' }, 
 
{ id: 169, tags: 'west' }, 
 
{ id: 170, tags: 'WOWW' }, 
 
{ id: 171, tags: 'liopppp' }, 
 
{ id: 172, tags: 'daftpunk' }, 
 
{ id: 173, tags: 'dfgdfg' }, 
 
{ id: 174, tags: 'sport' }, 
 
{ id: 175, tags: 'hhdhd' }, 
 
{ id: 176, tags: 'sdfsdfee' } ]; 
 

 
var arr1 = arr.filter(function(item) { 
 
\t return item.hasOwnProperty('tag_id'); 
 
}); 
 

 
var arr2 = arr.filter(function(item) { 
 
\t return item.hasOwnProperty('id') && item.hasOwnProperty('tags'); 
 
}); 
 

 
console.log(arr1, arr2)

Если вы используете ES2015 вы также можете использовать функции стрелок для упрощения выше кода:

var arr1 = arr.filter((item) => item.hasOwnProperty('tag_id')); 
var arr2 = arr.filter((item) => item.hasOwnProperty('id') && item.hasOwnProperty('tags')); 
+1

Не должно быть '&&'? –

+1

Да, спасибо @KindUser! Исправлено: –

+0

@BartekFryzowicz Спасибо, он отлично работает! – pkerckho

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