当在元素的第一部分上有重复项时,我想返回最大的部分。我对数组进行了排序,它看起来像:
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
结尾的情况。