JavaScript

Java Script задание с массивом

Нужно что бы код нашел первый неповторяющийся символ (буква цифра точка, без разницы) и показал его через alert.
Т. е например "123456789012345678982ШШБ82" -здесь не повторяется только буква Б, надо что бы код выявил мне Б
Уникальный элемент массива
(( str = '' ) => {
if( ! str.length ) return;
let charMap = {}, min = 1, minChar = [];

for( let char of str ) {
if( char === ' ' ) continue;
charMap[ char ] = charMap[ char ] + 1 || 1;
}

for( let char in charMap ) {
if( charMap[ char ] === min ) {
minChar.push( char );
}
}

charMap.minChar = minChar;
console.log( charMap.minChar ); // ["0", "Б"]
})( '123456789012345678982ШШБ82' );

Код тут: https://jsfiddle.net/6b4oduac/24/
Сергей Попков
Сергей Попков
3 819
Лучший ответ
Сергей Попков Вот еще ))

function minpls( str ) {
return str.split( '' ).filter(( el ) => {
return str.match( new RegExp( el, 'gmi' )).length === 1;
});
}

console.log( minpls( '123456789012345678982ШШБ82' )); // ["0", "Б"]

Код тут: https://jsfiddle.net/qsuntxwo/14/
1. Ошибаешься: первым не повторяющимся символом будет '0'.

2. Преврати строку на массив символов.

3. Отсортируй массив.

4. Выбери только те символы, которые отличаются от обоих соседей - получишь массив не повторяющихся символов.

5. Выбираешь из массива символ, который встретился раньше.

// Исходная строка
str = '123456789012345678982ШШБ82';
// Массив не повторяющихся символов
sym = str.split('').sort()
.filter((item, i, arr) => (i == 0 || arr[i-1] != item) && (i == arr.length-1 || arr[i+1] != item));
// Получение ответа
if (sym.length == 0) {
alert('Нет не повторяющихся');
} else {
alert(str[sym.reduce((prev, cur, i) => Math.min(prev, str.indexOf(cur)), str.length)]);
}
Александр Aleksandr А вот так намного короче (продолжаем цикл, пока позиция первого вхождения символа не совпадает с позицией последнего вхождения):

let i, str = '123456789012345678982ШШБ82';
for(i = 0; i < str.length && str.indexOf(str[i]) != str.lastIndexOf(str[i]); ++i);
if (i >= str.length) {
alert('Нет не повторяющихся');
} else {
alert(str[i]);
}
Нуок, задание, кому-то оно "нужно" и "надо".
ВОПРОС-то в чем?
Никита Яшин
Никита Яшин
84 496
Маленький Мык Как логику написать? Чтоб код проверил не повторяется ли этот символ?
Ну вообще-то - 0 (нуль) первый не повторяющийся символ.

Можно использовать функцию str.indexOf(str, pos), в цикле обходить посимвольно строку и вызывать функцию indexOf с параметрами (символ, позиция символа + 1) если вернёт -1, значит вхождений нет и это не повторяющийся символ.