Напишите свою реализацию 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$", т.е только первое ключ, значение |
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)); |
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)); |
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)); |
Спасибо, но можно в мой код, в общую функцию добавить как-то цикл?
|
А зачем в данном случае вам нужно изобретение велосипеда? Или вам нужно именно изобретение велосипеда?
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 вам не нужен новый объект? Сомневаюсь! |
Спасибо:thanks:
|
Часовой пояс GMT +3, время: 09:35. |