我有一个对象数组,每个对象都有属性filename(string):
我想将这些对象(在那些文件名属性上)与从$ sign开始到最后一次出现的相同命名进行分组。
所以我想实现这个grupation(每个组都应该是新数组):
blue$
blue$_35
blue_paint$
blue_paint$_35
blue_paint$_55
01_red_carper_floor$
01_red_carper_floor$_and_roof
01_red$
green_car$
有些对象会有多个,而有些对象会保持单个。
我正在使用javascript和jquery。
我发现了一个类似的问题,但它并不完全相同:
Find the longest common starting substring in a set of strings
答案 0 :(得分:1)
var objects = [
{filename:"green$1"},
{filename:"green$2"},
{filename:"green$3"},
{filename:"green$4"},
{filename:"blue$1$1"},
{filename:"blue$1"},
{filename:"red$1"},
{filename:"green$5"},
]
var groups = [];
for (var i = 0; i < objects.length; i++){
var filename = objects[i].filename
var n = filename.lastIndexOf("$");
var groupName = filename.substring(0, n);
if (groups[groupName] != undefined)
groups[groupName].push(objects[i]);
else {
groups[groupName] = [];
groups[groupName].push(objects[i]);
}
}
console.log(groups);