Hou*_*gou 5 javascript arrays string filtering
我需要过滤一个数组,我完全不知道如何做到这一点.
我需要过滤掉最大的数字.当第一个数字是'XXXX'第二个数字时,可以认为数字更大'XXXX-1',然后第二个数字更大.或者,如果第一个数字是'XXXX-1'第二个数字,则可以认为它更大'XXXX-2',然后第二个数字最大.
如果数字没有更大的版本,请在下面的示例中查看'2234'.'2234-1'因此,没有,'2234'是同类中最大的,应该被删除.
所以给这个数组(字符串)作为一个例子:
['7851', '7851-2', '7851-1', '2234', '2235', '2235-1']
Run Code Online (Sandbox Code Playgroud)
我期待这个结果:
['7851', '7851-1', '2235']
Run Code Online (Sandbox Code Playgroud)
您可以对项目进行分组并稍后对其进行排序,然后弹出最后一个并过滤原始数组并查找保存的值.
var array = ['7851', '7851-2', '7851-1', '2234', '2235', '2235-1'],
result = function (array) {
var groups = Object.create(null);
array.forEach(function (a) {
var key = a.split('-')[0];
groups[key] = groups[key] || [];
groups[key].push(a);
});
Object.keys(groups).forEach(function (k) {
groups[k].sort().pop();
});
return array.filter(function (a) {
return groups[a.split('-')[0]].some(function (b) { return a === b; });
});
}(array);
console.log(result);Run Code Online (Sandbox Code Playgroud)