вот мой код:Рекурсия: Как я могу удалить
var asset = ['1234_12', '1234_34', '1234_33', '4321_22', '4321_90'];
var largest = removeElements(asset);
function removeElements(asset) {
var retVal = [];
for (i = 0; i < asset.length; i++) {
for (var j = 0; j < asset.length; j++) {
if (asset[i].split('_')[0] == asset[j].split('_')[0]) {
if (asset[i].split('_')[1].split('.')[0] > asset[j].split('_')[1].split('.')[0]) {
retVal = removeElements(asset, asset[j]);
for (var k = 0; k < retVal.length; k++) {
for (var l = 0; l < retVal.length; l++) {
if (retVal[k].split('_')[0] == retVal[l].split('_')[0]) {
removeElements(retVal);
} else {
return retVal;
}
}
}
}
}
}
}
return retVal;
}
Вот структура массива:
var asset = ['1234_12', '1234_34', '1234_33', '4321_22', '4321_90'];
То, что я хочу, чтобы получить самый большой в '1234'
или '4321'
серии. Например, в этом случае мне нужно захватить '1234_34'
и '4321_90'
.
RangeError: Maximum call stack size exceeded
Что я делаю неправильно?
Действительно ли это? – jsfrocha
Да. Обновлен код. –
Для каждой «категории номеров» (1234) я бы использовал карту для преобразования всех элементов массива в «последний» номер, а затем отфильтровал его до самого высокого из этих чисел. Готово. – evolutionxbox