Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Вопросы по учебнику (https://javascript.ru/forum/misc/48681-voprosy-po-uchebniku.html)

extrabass4 12.07.2014 14:37

Вопросы по учебнику
 
function unique(arr) {

var obj = {};

var result = [];

nextInput:

for(var i=0; i<arr.length; i++) {

var str = arr[i];

for(var j=0; j<result.length; j++) {
if (result[j] == str) continue nextInput; }
result.push(str);
}
return result;
}

var strings = ["кришна", "кришна", "харе", "харе",
"харе", "харе", "кришна", "кришна", "8-()"];

alert( unique(strings) );

Здравствуйте в коде выше мне не совсем понятен синтаксис nextInput:

и создание объекта var obj = {};

как я понял мы создаём пустой объект var obj = {}; и делаем в нём ключ nextInput: а разве по синтаксису ключ создаётся не таким образом obj.nextInput ? и если во вложенном цикле срабатывает if (result[j] == str) continue nextInput; , то в ключе nextInput перезаписывается значение внешнего цикла , а вернее значение его переменной var i - я всё правильно понимаю ? и если можно поподробнее о объявление ключа объекта таким образом nextInput:

jsnb 12.07.2014 14:57

Цитата:

Сообщение от extrabass4
как я понял мы создаём пустой объект var obj = {}; и делаем в нём ключ nextInput

nextInput - это не свойство объекта, а метка. Переход на нее проиходит через continue nextInput когда result[j] == str. Таким образом повторяющиеся строки не будут добавлены в массив result.


Часовой пояс GMT +3, время: 13:36.