Не работает вложенный цикл. Котлин
не совсем понимаю как работают вложенные циклы, у меня есть задача, нужно объединить два массива в map с помощью цикла for, в моем коде вложенный цикл не работает, выходит только так {KG=+98, RU=+98, USA=+98, TR=+98}
var myMap: MutableMap<String, String>? = null
fun main(){
val names = arrayOf("KG","RU", "USA", "TR")
val codes = arrayOf("+996", "+7", "+1", "+98")
myMap = mutableMapOf()
for (name in names) {
for (code in codes){
myMap!![name] = code
}
}
println(myMap)
println(myMap!!["KG"])
}
Ответы (1 шт):
Автор решения: Вася Воронцов
→ Ссылка
Всё у вас работает так, как вы и написали: каждому имени (name) последовательно ставятся в соответствие все коды (code), а сохраняется, т.е. ничем не замещается, последний код.
Пример вашей логики на js:
names = ["a", "b", "c", "d"];
codes = ["0", "1", "2", "3"];
obj = {};
for (let name of names) {
for (let code of codes) {
obj[name] = code;
}
}
console.log(obj);
Вместо этого вам нужно ставить в соответствие только элементы с одинаковым индексом, т.е.:
for (i in names.indices) {
myMap!![names[i]] = codes[i];
}
Пример работы новой логики на js:
names = ["a", "b", "c", "d"];
codes = ["0", "1", "2", "3"];
obj = {};
for (let i = 0; i < names.length; i++) {
obj[names[i]] = codes[i];
}
console.log(obj);