Как проитерировать объект и получить на выходе новый с Object.keys()

287
13 июля 2018, 18:20

У меня есть на входе объект, как вернуть на выходе измененный объект на основе сущствующего?

Я использовал для этого Object.keys() в связке с итератором map()... Но что-то не работает, на выходе получаю unefined

    let objjjj = { 
    	a: 2, 
    	b: 3, 
    	c: 4 
    } 
     
    console.log( 
        Object.keys(objjjj).map((key, i) =>  
            {  
    			key: objjjj[key] + 1 
        	} 
        ) 
    )

Answer 1
  • Создаём пустой итоговый объект
  • Берём ключи исходного объекта (по условию, с помощью Object.keys)
  • Для каждого ключа в итоговый объект добавляем этот ключ со значением, равным значению из исходного объекта плюс единица

Итоговый код:

let objjjj = { a: 2, b: 3, c: 4 }; 
let result = {}; 
Object.keys(objjjj).forEach(key => { result[key] = objjjj[key] + 1; }); 
console.log(result);

Что не так с map в исходном коде:

  • В { key: objjjj[key] + 1 } фигурный скобки воспринимаются не как создание нового объекта, а как границы тела стрелочной функции. Возвращать объект нужно как { return { key: objjjj[key] + 1 }; }
  • Однако тогда имя ключа воспримется как "key", а не как значение key. Поэтому нужно сделать [key]:
  • В итоге получается массив объектов, в каждом из которых по одному ключу-значению из исходного объекта. Нужно объединять их в один объект (например, с помощью связки reduce и Object.assign)

Итоговый код:

let objjjj = { a: 2, b: 3, c: 4 }; 
let result = Object.keys(objjjj).map(key => { 
    return { [key]: objjjj[key] + 1 }; 
}).reduce((acc, cur) => Object.assign(acc, cur), {}); 
console.log(result);

READ ALSO
Переход к другому файлу JS

Переход к другому файлу JS

UPD Есть файл indexhtml и index2

303
Как получить координаты мышки в javascript без jQuery?

Как получить координаты мышки в javascript без jQuery?

Скиньте пожалуйста самый простой пример с двумя input, в которых будут обновляться координаты мышки по горизонтали и вертикалиБез jQuery , спасибо...

285
Проблема с heroku

Проблема с heroku

Пытаюсь выставить приложение на сервер heroku,но не получается,делаю всё как по инструкции

302