Создать список из значений объекта - PullRequest
0 голосов
/ 01 февраля 2019

Мне нужно создать список (ключи) из множества объектов (в этом примере я буду использовать 3) следующим образом:

{Year: "2016", A: "2.015", B: "1.959"}
{Year: "2017", A: "1.200", C: "2.247"}
{Year: "2018", A: "1.301", C: "2.056", D: "1"}

И получить в результате: Year,A,B,C,D.Что мне нужно, это сохранить значение Year и объединить остальные значения.Как я могу это сделать?

РЕДАКТИРОВАТЬ:

Я сделал это

json = [
    {Year: "2016", A: "2.015", B: "1.959"},
    {Year: "2017", A: "1.200", C: "2.247"},
    {Year: "2018", A: "1.301", C: "2.056", D: "1"}
];
keys= Object.keys(json[0]); // console.log(keys) = Year,A,B

Я читал ключи от первого объекта моего JSON, но теперь мне нужносмесь каждого объекта и их ключей

Ответы [ 5 ]

0 голосов
/ 01 февраля 2019

Перебирайте все объекты, извлекайте ключи и добавляйте их к Set.

var json = [
    {Year: "2016", A: "2.015", B: "1.959"},
    {Year: "2017", A: "1.200", C: "2.247"},
    {Year: "2018", A: "1.301", C: "2.056", D: "1"}
];

var set = new Set();
json.forEach((value)=> Object.keys(value).forEach(key => { set.add(key); }));
console.log([...set]);
0 голосов
/ 01 февраля 2019
var a=[{Year: "2016", A: "2.015", B: "1.959"}, {Year: "2017", A: "1.200", C: "2.247"}, {Year: "2018", A: "1.301", C: "2.056", D: "1"}];

console.log([
  ...new Set(a.map(e. => Object.keys(e)).flat())
].join(','));
0 голосов
/ 01 февраля 2019

Используйте forEach и Set

var a=[{Year: "2016", A: "2.015", B: "1.959"},
{Year: "2017", A: "1.200", C: "2.247"},
{Year: "2018", A: "1.301", C: "2.056", D: "1"}]
var arr=[];
a.forEach((e)=>{
arr=[...arr,...Object.keys(e)]
})
arr=[...new Set(arr)]
console.log(arr)
0 голосов
/ 01 февраля 2019

Приведенный ниже код сгенерирует Set уникальных ключей.Это может быть легко преобразовано обратно в массив или строку.

const data = [
    {Year: "2016", A: "2.015", B: "1.959"},
    {Year: "2017", A: "1.200", C: "2.247"},
    {Year: "2018", A: "1.301", C: "2.056", D: "1"}
];

const keys = new Set([].concat(...data.map(o => Object.keys(o))));

console.log([...keys]);
console.log([...keys].join(','));

Примечание: трюк [].concat[...twoDimensionalArray] можно заменить вызовом flatMap() - в настоящее время браузерподдержка все еще немного отсутствует.

0 голосов
/ 01 февраля 2019

Простой - используйте reduce и Object.keys:

const data = [{
  Year: "2016",
  A: "2.015",
  B: "1.959"
}, {
  Year: "2017",
  A: "1.200",
  C: "2.247"
}, {
  Year: "2018",
  A: "1.301",
  C: "2.056",
  D: "1"
}];

const output = data.reduce((acc, val) => {
  Object.keys(val).forEach(key => {
    if (!acc.includes(key)) {
      acc.push(key);
    }
  });
  return acc;
}, []);

console.log(output);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...