Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 18.11.2018, 15:10
Аспирант
Отправить личное сообщение для Marson Посмотреть профиль Найти все сообщения от Marson
 
Регистрация: 14.08.2018
Сообщений: 65

Напишите свою реализацию Array.map для объектов:
map({name: "Иван", age: 17},function(key,value){
var result = {};
result[key+"_"] = value + "$";
return result;
}) //должен вернуть {name_: "Иван$", age_: "17$"}

function map(object, callback){
 for(var key in object)
  return console.log(new Object(callback(key, object[key])));
}

map({name: 'Ivan', age: 24}, function(key, value){
  var result = {};
  result[key+"_"] = value + "$";
  return result;
})


Что бы выводило все ключи и все значения, нужно цикл добавить?
В консоль выводит только name_: "Ivan$", т.е только первое ключ, значение
Ответить с цитированием
  #2 (permalink)  
Старый 18.11.2018, 15:37
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,112

Marson,
function map(object, callback){
var obj = {};
for(var key in object)  Object.assign(obj,callback(key, object[key]));
  return obj
}

var obj = map({name: 'Ivan', age: 24}, function(key, value){
  var result = {};
  result[key+"_"] = value + "$";
  return result;
})
alert(JSON.stringify(obj, null, 4));
Ответить с цитированием
  #3 (permalink)  
Старый 18.11.2018, 15:42
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,112

Marson,
function map(object, callback){
for(var key in object)  Object.assign(object,callback(key, object[key])), delete object[key];
}
var object = {name: 'Ivan', age: 24};
map(object, function(key, value){
  var result = {};
  result[key+"_"] = value + "$";
  return result;
})
alert(JSON.stringify(object, null, 4));
Ответить с цитированием
  #4 (permalink)  
Старый 18.11.2018, 16:04
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,112

Marson,

function map(object, callback){
for(var key in object) {
var obj = callback(key, object[key]);
delete object[key];
for(key in obj) object[key] = obj[key];
}
}
var object = {name: 'Ivan', age: 24};
map(object, function(key, value){
  var result = {};
  result[key+"_"] = value + "$";
  return result;
})
alert(JSON.stringify(object, null, 4));
Ответить с цитированием
  #5 (permalink)  
Старый 18.11.2018, 18:52
Аспирант
Отправить личное сообщение для Marson Посмотреть профиль Найти все сообщения от Marson
 
Регистрация: 14.08.2018
Сообщений: 65

Спасибо, но можно в мой код, в общую функцию добавить как-то цикл?
Ответить с цитированием
  #6 (permalink)  
Старый 18.11.2018, 19:04
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

А зачем в данном случае вам нужно изобретение велосипеда? Или вам нужно именно изобретение велосипеда?
const result = Object.entries({ name: 'Ivan', age: 24 })
	.reduce((object, [key, value]) => {
		object[key + "_"] = value + "$";
		return object;
	}, {});

console.log(result);


Если нужно именно через объявление, то можно так...

function map(object, reducer) {
	return Object.entries(object).reduce(reducer, {})
}
const result = map({ name: 'Ivan', age: 24 }, (object, [key, value]) => {
	object[key + "_"] = value + "$";
	return object
});

console.log(result);


В callback вам не нужен новый объект? Сомневаюсь!

Последний раз редактировалось Malleys, 18.11.2018 в 19:13.
Ответить с цитированием
  #7 (permalink)  
Старый 19.11.2018, 22:22
Аспирант
Отправить личное сообщение для Marson Посмотреть профиль Найти все сообщения от Marson
 
Регистрация: 14.08.2018
Сообщений: 65

Спасибо
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сделать всплывающую подсказку свою для map area Shevtcoff Элементы интерфейса 8 11.09.2012 17:48
Модуль для web-to-print проекта Anton2507 Работа 0 29.07.2012 11:35
Новая система управления сайтом Scripto CMS deepslam Ваши сайты и скрипты 38 31.01.2011 14:55