18.11.2018, 15:10
|
Аспирант
|
|
Регистрация: 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$", т.е только первое ключ, значение
|
|
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));
|
|
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));
|
|
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));
|
|
18.11.2018, 18:52
|
Аспирант
|
|
Регистрация: 14.08.2018
Сообщений: 65
|
|
Спасибо, но можно в мой код, в общую функцию добавить как-то цикл?
|
|
18.11.2018, 19:04
|
|
Профессор
|
|
Регистрация: 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.
|
|
19.11.2018, 22:22
|
Аспирант
|
|
Регистрация: 14.08.2018
Сообщений: 65
|
|
Спасибо
|
|
|
|