假设分隔符始终是逗号,这是一个可能的解决方案
- 将每个数组元素转换为元素数组
- 为每个地址创建一个具有两个属性 {unique_address:"", changed_info:""} 的模型。unique_address 属性由数组的最后三个元素组成。
.
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 对集合进行分组?