当在元素的第一部分上有重复项时,我想返回最大的部分。我对数组进行了排序,它看起来像:

var sortedMyArray = ["4ff02829-df7e/0", "4ff02829-df7e/10", "8c138c02-c139/37", "54be465f-0c03/41", "b2036e03-384f/4", "b2036e03-384f/32", "b2036e03-384f/35"];

我的预期结果是:
["4ff02829-df7e/10", "8c138c02-c139/37", "54be465f-0c03/41", "b2036e03-384f/35"];
到目前为止,我的代码是:
for(var i=0;i<sortedMyArray.length;i++){
                    for (var k = i + 1; k < sortedMyArray.length; k++) {
                     if(sortedMyArray[i].split('/')[0] == sortedMyArray[k].split('/')[0]){
                          console.log('First values of element equal so remove the smallest element');

                            if(sortedMyArray[i].split('/')[1]<sortedMyArray[k].split('/')[1]){
                                sortedMyArray.splice(sortedMyArray[i],1);
                            }
                        }
                     }
                  }

最佳答案

由于您对数组进行了排序,因此您可以过滤出每个具有下一个元素的元素,并使用'/'相同的字符串:

result = sortedMyArray.filter( function ( el, i ) {
    if ( i + 1 === sortedMyArray.length )
        return true;
    return el.split( '/' )[ 0 ] !== sortedMyArray[ i + 1 ].split( '/' )[ 0 ];
} );

这假定您的数组已正确排序,因此您始终希望保留每个前缀的最后一个条目。以防万一,我建议您仔细检查排序情况是否符合/2/10结尾的情况。

10-01 03:15