У меня есть тренировочное задание, чтобы проверить массив на совпадения с другим массивом. Найденные совпадения должны быть заменены любым значением.
В одном случае я сделал это, но с использованием for...of
что-то пошло не так - я не понимаю, почему.
//source array
let arr = ['one', 'two', 'three', 'four', 'five', 'six'];
//array to compare
let arrForChange = ['one', 'four', 'six'];
изменить одноэлемент из исходного массива прост
let changedArr = arr.map(el => { if( el === 'four'){
return el = 4;
} else {
return el = el} }
);
// console.log(changedArr); // one,two,three,4,five,six
Замена в списке немного интереснее. Здесь я использую .includes()
//This variant work
let cahngedArrFromList = arr.map(el => {
if(arrForChange.includes(el)){
return 'A';
} else {
return el;
}
});
// console.log(cahngedArrFromList); // A,two,three,A,five,A
Более интересно искать разные варианты. Здесь я использую for...of
и что-то идет не так, результат не тот, который я ожидал - заменяется только первое значение.
//This variant do not work =(
let cahngedArrFromListTwo = arr.map(el => {
for (const item of arrForChange){
if (item === el){
return 'A';
} else {
return el;
}
}
});
// console.log(cahngedArrFromListTwo); // A,two,three,four,five,six
Если вы удалите условие else
, тогда, похоже, все работает. .. но нет
let cahngedArrFromListThree = arr.map(el => {
for (const item of arrForChange){
if (item === el){
return 'A';
} /* else {
return el;
} */
}
});
// console.log(cahngedArrFromListTree); // A,,,A,,A
Можете ли вы объяснить мне, что с for...of
поведение? Или я его неправильно использую?