Разделить подобные элементы простого свойства можно использовать Bucket sort:
//Elements to divide into buckets according to their foo value:
var elems = [
{foo: 1, bar: 23}
, {foo: 2, bar: 24}
, {foo: 1, bar: 25}
, {foo: 2, bar: 26}
, {foo: 2, bar: 27}
, {foo: 3, bar: 29}
];
//Sorting elements into buckets depending on foo:
var buckets = {};
for(var i = 0; i < elems.length; i++){
var elem = elems[i];
if(elem.foo in buckets){
buckets[elem.foo].push(elem);
}else{
buckets[elem.foo] = [elem];
}
}
//Iterating buckets to display output:
var keys = Object.keys(buckets);
for(var i = 0; i < keys.length; i++){
var key = keys[i];
console.log(key+' => '+JSON.stringify(buckets[key]));
}
Это будет производить следующий вывод:
1 => [{"foo":1,"bar":23},{"foo":1,"bar":25}]
2 => [{"foo":2,"bar":24},{"foo":2,"bar":26},{"foo":2,"bar":27}]
3 => [{"foo":3,"bar":29}]
может включать в себя пример массива, _ «тип записи» _ в вопросе? – guest271314