我有一组地址:
或者像这样:
我不知道字符串的唯一或相同部分有多长。
我希望能够找出地址的唯一部分,并将其显示一次,其他部分保持不变,这样看起来像这样:
一些道路,城镇,邮政编码(或城镇,第二个例子的邮政编码)
我尝试过使用一个对象,然后使用_.pluck和_.uniq测试该项是否唯一,但如果上面的项目3失败,则该项不符合其他项。
答案 0 :(得分:0)
假设分隔符始终是逗号,这是一个可能的解决方案
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"}];
有了这样的列表,你有几种方法可以获得你想要的东西。
我建议使用内置在underscore.js中的_.groupBy(list, iterator)
像这样:
_.groupBy(modelList, function(element) {
return element.unique_address;
});
就是这样。
有关使用groupby的更多信息,请参阅How to use groupBy in Backbone.js to group collections?