セパレーターが常にコンマであると仮定すると、可能な解決策は次のとおりです
- 各配列要素を要素の配列に変換します
- 住所ごとに、2 つの属性 {unique_address:"", changing_info:""} を持つモデルを作成します。unique_address 属性は、配列の最後の 3 つの要素で構成されます。
.
var modelList=[];
_.each(addresses, function(element){
var addrArr= addresses[element].split(""); //= ["Flat 1", "Some Road", "Town", "Postcode"];
var len=addrArr.length;
var uniq=addrArr[len-1]+" "+addrArr[len-2]+" "+addrArr[len-3]; //uniq= "Some Road Town Postcode"
var chang="";
for (var i=0;i<(len-3);i+){
chang=chang+addrArr[i];
} //which gives chang="Flat 1"
modelList.push({unique_address:uniq, changing_info:chang});
});
これで、次のようなオブジェクトのリストができました:
modelList=[{unique_address: "Some Road Town Postcode", changing_info: "Flat 1"},
{unique_address: "Some Road Town Postcode", changing_info: "Flat 2"},
{unique_address: "Some Road Town Postcode", changing_info: "Flat 45"}];
このようなリストがあれば、欲しいものを手に入れる方法がいくつかあります。
_.groupBy(list, iterator)
underscore.js に組み込まれているものを使用することをお勧めします。
_.groupBy(modelList, function(element) {
return element.unique_address;
});
それで全部です。
groupby の使用の詳細については、Backbone.js で groupBy を使用してコレクションをグループ化する方法を参照してください。