Как добавить свойства для всех ключей и значений в объекте? - PullRequest
0 голосов
/ 18 сентября 2018

У меня есть объект Javascript:

{
    "Central":73322346.47533998,
    "East":87801368.39711998,
    "North":76468694.37534,
    "South":142687496.66816995,
    "West":76815749.40554999
}

Я хочу отобразить этот объект в массив, который выглядит следующим образом

[
    {"name" :"Central ,"size" : 73322346.47533998},
    {"name" : "East", "size" : 87801368.39711998},
    {"name": "North","size":76468694.37534},
    {"name": "South","size" :142687496.66816995},
    {"name":"West","size":76815749.40554999}
]

Как мне идти?

Ответы [ 4 ]

0 голосов
/ 18 сентября 2018

Простой способ сделать это - использовать клавиши входного объекта, используя for..in loop :

const input = {
    "Central": 73322346.47533998,
    "East": 87801368.39711998,
    "North": 76468694.37534,
    "South": 142687496.66816995,
    "West": 76815749.40554999
};

let output = [];
for (const key in input)
{
    output.push({ "name": key, "size": input[key] });
}

console.log(output);

Это, вероятно, самый быстрый способ достижения желаемого результата.

0 голосов
/ 18 сентября 2018

Вы можете перебрать key объекта, чтобы получить массив объектов, как и ожидалось:

var data = {"Central":73322346.47533998,"East":87801368.39711998,"North":76468694.37534,"South":142687496.66816995,"West":76815749.40554999};
var res = [];
Object.keys(data).forEach((key)=>{
  res.push({
    name: key,
    size: data[key]
  });
});
console.log(res);
0 голосов
/ 18 сентября 2018

В ES2017 вы можете сделать:

Object.entries(obj).map(([name, size])=> ({name, size}))

var obj = {
    "Central":73322346.47533998,
    "East":87801368.39711998,
    "North":76468694.37534,
    "South":142687496.66816995,
    "West":76815749.40554999
}

var res = Object.entries(obj).map(([name, size])=> ({name, size}));

console.log(res);

В ES2011 (5.1), ES2015 (6), .... и далее вы можете сделать:

Object.keys(obj).map(function(k) {
    return {name: k, size: obj[k]}
})

var obj = {
    "Central":73322346.47533998,
    "East":87801368.39711998,
    "North":76468694.37534,
    "South":142687496.66816995,
    "West":76815749.40554999
}

var res = Object.keys(obj).map(function(k) {
    return {name: k, size: obj[k]}
})

console.log(res)
0 голосов
/ 18 сентября 2018

сделать так:

obj = {"Central":73322346.47533998,"East":87801368.39711998,"North":76468694.37534,"South":142687496.66816995,"West":76815749.40554999}
out = [];
Object.keys(obj).forEach(function(d){ out.push({name: d, size: obj[d]});})
//out will contain your formatted data

enter image description here

...