Вопрос о функции, возвращающей данные массива - PullRequest
2 голосов
/ 12 апреля 2010
var grossBrackets = new Array( '300', '400', '500', '600', '700', '800', '900', '1000' );   
function bracketSort( itemToSort ) {
        for( index = 0 ; index < grossBrackets.length ; index++ ) {
            if ( itemToSort < grossBrackets[index] ) {
                bracketData[index]++;
            } else if ( itemToSort > grossBrackets[7] ) {
                grossBrackets[7]++;
            }
        }
        return bracketData;
    }

Это мой текущий код, и я хочу отсортировать данные в соответствующих скобках. Мой исходный код очень длинный, но когда я ввожу эти цифры в функцию:

200.18
200.27
200.36
200.45
200.54

BracketData печатает 5,5,5,5,5,5,5,5 или есть лучший способ сделать это?

Кронштейны: <300, <400, <500, <600, <700, <800, <900, <1000, больше 1000 </p>

1 Ответ

1 голос
/ 12 апреля 2010

Если вы хотите, чтобы каждый элемент был помещен в одну скобку, вам нужно завершить цикл более grossBrackets, как только вы нашли совпадение. Вы можете сделать это с помощью ключевого слова break, например:

if ( itemToSort < grossBrackets[index] ) {
   bracketData[index]++;
   break;
} 

Кстати, вы проверяете, больше ли itemToSort, чем grossBrackets[7] 8 раз, по одному для каждого элемента в grossBrackets. Вам действительно нужно сделать это только один раз, поэтому он не должен быть в цикле.

...