Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 21.08.2018, 16:15
Интересующийся
Отправить личное сообщение для ArtyomZaitsev Посмотреть профиль Найти все сообщения от ArtyomZaitsev
 
Регистрация: 29.11.2017
Сообщений: 11

Вложенные циклы for не хотят пушить в массив правильно
Добрый день, решал задачку, вроде все написал верно, но почему то в массив result у меня после циклов попадает не то, что выводится в консоль.Как быть?
const data = [
  '12,Телепорт бытовой VZHIH-101 ,17,10000',
  '77, Меч световой FORCE (синий луч), 2,57000'
];

function parseData(arr, data) {
	let result = []
	let obj = {}

	for (let i in data){
		for (let j in arr) {
			obj[arr[j]] = data[i].split(',')[j].trim()
		}
		console.log(obj) // <--здесь то что надо
		result.push(obj) // <--здесь не то что надо
	}
	return result
}

let items = parseData(['id', 'name', 'amount', 'price'], data);
console.log(items);
Ответить с цитированием
  #2 (permalink)  
Старый 21.08.2018, 16:24
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

result.push({...obj});
Ответить с цитированием
  #3 (permalink)  
Старый 21.08.2018, 16:25
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

У вас один и тот же obj, каждая последующая итерация просто перезаписывает предыдущие значения.
Ответить с цитированием
  #4 (permalink)  
Старый 21.08.2018, 16:30
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

https://www.youtube.com/watch?v=4oudziatkLI (первые полторы минуты)
Ответить с цитированием
  #5 (permalink)  
Старый 21.08.2018, 16:42
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,075

ArtyomZaitsev,
<script>
const data = [
  '12,Телепорт бытовой VZHIH-101 ,17,10000',
  '77, Меч световой FORCE (синий луч), 2,57000'
];
function parseData(arr, data) {
    return data.map(function(text) {
        return text.split(",").reduce(function(obj, str, index) {
            obj[arr[index]] = str.trim();
            return obj
        }, {})
    })
};
let items = parseData(['id', 'name', 'amount', 'price'], data);
document.write(JSON.stringify(items, null, 4));
 </script>
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как правильно составить массив imedia Элементы интерфейса 1 16.01.2017 08:29
Как правильно искать элементы в DOM и записывать результаты в массив? MouseOver Events/DOM/Window 8 25.10.2016 12:36
Как правильно прописать массив? dee3000 Серверные языки и технологии 11 09.07.2015 06:22
Как правильно оформить массив в js файле? alexander70 Общие вопросы Javascript 4 15.06.2013 12:19
Как правильно распарсить массив? man Общие вопросы Javascript 3 19.10.2011 17:02