通过循环键和值来拆分对象数组

时间:2017-02-10 11:35:21

标签: javascript arrays object

有没有办法对这个对象数组进行排序? :

[ 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和一个包含内部idtags的新数组。

我不知道如何正确使用.map。

1 个答案:

答案 0 :(得分: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) {
	return item.hasOwnProperty('tag_id');
});

var arr2 = arr.filter(function(item) {
	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'));