@dimachornenkiy

Почему так странно работают циклы?

Есть функция
function convert(){
    let currentObj={
      number: ["123","456"],
      text: ["text1", "text2"],
 	}
    let copy=[]
    let keysArray=Object.keys(currentObj)
    for (let i=0 ; i < keysArray.length; i++){
      	let key=keysArray[i]
        for (let j=0; j <currentObj[key].length; j++) { 
    		copy[j]={};
    		copy[j][key]= currentObj[key][j] 
      	};
    }
 console.log(copy) 
}
convert()


Почему она возвращает
[
       {  text : text1  },
      {   tex t: text2 } 
 ]

хотя должна
[
       {
		number:"123"
		text:"text1"
	},
	{
		number:"456"
		text:"text2"
	}
]

По работе отметил что значение "number" тупо переписывается значением "text", хотя по логике "text" должен просто добавляться
  • Вопрос задан
  • 76 просмотров
Решения вопроса 1
@i1yas
copy[j]={};
В этом месте индекс j будет повторяться (0, 1, 0, 1), вы заново присваиваете пустой объект.
Можно исправить так:
if (!copy[j]) copy[j]={};
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы