Отображение объекта в массив - PullRequest
3 голосов
/ 16 апреля 2019

Учитывая объект, подобный этому:

{
  aaa: {
    text: "Text1",
    path: "Path1",
    type: "Type1"
  },
  bbb: {
    text: "Text2",
    path: "Path2",
    type: "Type2"
  },
...
}

Какой самый простой способ вернуть этот массив:

[
   {value: "aaa", label: "Text1"},
   {value: "bbb", label: "Text2"}
]

Должен ли я пройти через объект? Я думал, что может быть способ с Object.keys() и Object.values()

Ответы [ 5 ]

2 голосов
/ 16 апреля 2019

Вы можете использовать Object.entries для преобразования объекта в массив.Используйте map для зацикливания и возврата нужного объекта.

let obj = {
  aaa: {
    text: "Text1",
    path: "Path1",
    type: "Type1"
  },
  bbb: {
    text: "Text2",
    path: "Path2",
    type: "Type2"
  },
}

let result = Object.entries(obj).map(([k, v]) => ({value: k,label: v.text}));

console.log(result);
1 голос
/ 16 апреля 2019

Вы можете использовать цикл for..in , чтобы выполнить итерацию объекта и передать значение в массив

let obj = {
  aaa: {
    text: "Text1",
    path: "Path1",
    type: "Type1"
  },
  bbb: {
    text: "Text2",
    path: "Path2",
    type: "Type2"
  }
}
let modObj = [];

for (let keys in obj) {
  modObj.push({
    value: keys,
    label: obj[keys].text
  })
};

console.log(modObj)
1 голос
/ 16 апреля 2019

Вы должны пройти через эти значения ключа, использовать метод Object.entries для получения пары ключ-значение и метод Array#map для итерации и создания нового массива.

let data = {"aaa":{"text":"Text1","path":"Path1","type":"Type1"},"bbb":{"text":"Text2","path":"Path2","type":"Type2"}};

let res = Object.entries(data).map(([value, { text: title }]) => ({ value, title }))

console.log(res)
1 голос
/ 16 апреля 2019

это может помочь

const obj = {
  aaa: {
    text: "Text1",
    path: "Path1",
    type: "Type1"
  },
  bbb: {
    text: "Text2",
    path: "Path2",
    type: "Type2"
  },
};
const ans = Object.keys(obj).map(itm => ({value: itm, title: obj[itm].text}))

console.log(ans);
0 голосов
/ 16 апреля 2019

Поскольку никто не упомянул использование обоих Object.keys и Object.values, как вы упомянули в вопросе ...

var obj = {
  aaa: {
    text: "Text1",
    path: "Path1",
    type: "Type1"
  },
  bbb: {
    text: "Text2",
    path: "Path2",
    type: "Type2"
  }
};

var result = Object.keys(obj).map(function(key, i){
  return {value: key, label: Object.values(obj)[i].text}
});

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