Создайте пару ключ-значение для текущего ключа и значения

В настоящее время у меня есть массив простых объектов:

data = [{ "alternative hip hop": 3 }, { "escape room": 4 }, ...]

... в которую я хотел бы превратиться в

newData = [
    { "name": "alternative hip hop", "count": 3 },
    { "name": "escape room", "count" 4 }
]

Это выполнимо с картой? Я не смог понять, как это сделать с одним.

Также приветствуются ответы от lodash

3 ответа

Предполагая, что каждый элемент в данных имеет одну пару ключ / значение, вам нужно:

data.map(obj => {
    const key = Object.keys(obj)[0]; //Just get the first key we find
    return {
        name: key,
        count: obj[key]
    };
})

Я надеюсь, что я не написал это ложно на моем мобильном телефоне, но вот способ:

let newData = data.map(e => {
    for(let key in e) {
       return { 
           name: key,
           count: e[key]
       };
    }
});

Я не знаком с loadsh, но с javascript вы можете сделать следующее:

var data = [{ "alternative hip hop": 3 }, { "escape room": 4 }]
var newData = [];

data.forEach((item)=>{ //loop over the array
  Object.keys(item) //get the object keys
    .map((keyName)=>{  //loop over each key
        newData.push({name:keyName, count:item[keyName]}) //insert it into the new array
     })
})
console.log(newData)
Другие вопросы по тегам