JavaScript — заменить элемент в массиве, если они совпадают с элементом из другого массива

Заменить элемент в массиве, если он совпадает с элементом из другого массива

Я думаю, это потому, что когда вы делаете первую проверку, вы сравниваете

"one" === "one" // will return 'A'

Вы больше не проверяете «один», как вы вернулись.

Тогда "one" === "two" // will return el

Поскольку вы возвращаетесь в этот момент снова, вы никогда не проверяете, "four" === "two" и т. Д.

Это то же самое для каждой проверки после. Поскольку вы возвращаетесь после первой проверки, вы никогда не найдете других совпадений. Удаляя 2-е возвращение, вы продолжаете искать весь массив, чтобы найти совпадения.

Если вы бежите без 2-го возврата

 let changedArrFromListThree = arr.map(el ={amp}gt; { for (const item of arrForChange) { console.log("doesMatch? "   item   " "   el); if (item === el) { console.log("MATCH"); return "A"; } else { // return el; } } }); 

Выход

 doesMatch? one one MATCH doesMatch? one two doesMatch? four two doesMatch? six two doesMatch? one three doesMatch? four three doesMatch? six three doesMatch? one four doesMatch? four four MATCH doesMatch? one five doesMatch? four five doesMatch? six five doesMatch? one six doesMatch? four six doesMatch? six six MATCH [ 'A', undefined, undefined, 'A', undefined, 'A' ] 

Когда вы бежите со вторым возвращением

 let changedArrFromListThree = arr.map(el ={amp}gt; { for (const item of arrForChange) { console.log("doesMatch? "   item   " "   el); if (item === el) { console.log("MATCH"); return "A"; } else { return el; } } }); 

Выход

 doesMatch? one one MATCH doesMatch? one two doesMatch? one three doesMatch? one four doesMatch? one five doesMatch? one six [ 'A', 'two', 'three', 'four', 'five', 'six' ] 

Это проясняет, что происходит.

Понравилась статья? Поделиться с друзьями:
JavaScript & TypeScript
Adblock
detector