过滤字符串数组

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)

Nin*_*olz 5

您可以对项目进行分组并稍后对其进行排序,然后弹出最后一个并过滤原始数组并查找保存的值.

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)