Превращение объекта функций в массив - PullRequest
0 голосов
/ 11 февраля 2020

Скажем, у нас есть такой объект:

myObj = {
  function1 : function(d){return d+1;},
  function2 : function(d){return d+2;},
  function3 : function(d){return d+3;}
}

Как я могу преобразовать этот объект в массив таких объектов:

{name : "function1", func: function()} 

, где function() - реальная функция

Ответы [ 3 ]

4 голосов
/ 11 февраля 2020

Вы можете использовать map() на Object.entries()

const myObj = {
  function1 : function(d){return d+1;},
  function2 : function(d){return d+2;},
  function3 : function(d){return d+3;}
}

const arr = Object.entries(myObj).map(([name, func]) => ({name, func}));

console.log(arr)

Если вы заметили, что я использовал func вместо function, это не потому, что function является зарезервированным ключевым словом, и вы не можете назвать переменную function , Если вы хотите использовать это имя, вы можете использовать следующий код:

Примечание: Не используйте function или любое другое зарезервированное ключевое слово в качестве имени свойства. Потому что вы не сможете разрушить его, используя то же имя.

const myObj = {
  function1 : function(d){return d+1;},
  function2 : function(d){return d+2;},
  function3 : function(d){return d+3;}
}

const arr = Object.entries(myObj).map(([name, func]) => ({name, function: func}));

console.log(arr)
0 голосов
/ 11 февраля 2020
const myObj = {
 function1 : function(d){return d+1;},
 function2 : function(d){return d+2;},
 function3 : function(d){return d+3;}
}
const result = Object.keys(myObj).map(elem=>({name:elem,func:myObj[elem]}))
```.
0 голосов
/ 11 февраля 2020
const myObj = {
  function1 : function(d){return d+1;},
  function2 : function(d){return d+2;},
  function3 : function(d){return d+3;}
}

const arr = [];
for (const key in myObj) {
    arr.push({ 
        name: key, 
        func: myObj[key]
    })
}

console.log(arr);

...