melkaya94
@melkaya94

Как переделать массив?

Есть массив:

[
{
 id: {
         title: "Id",
         value: 19,
        },
  title: {
         title: "Title",
         value: " Режиссёр \"Доктора Хауса\" снимет новый фильм"
   },
   slug: {
          title: "Slug",
          value: "slug2334",
   }
},
{
     id: {
            title: "Id",
            value: 8,
       },
       title: {
             title: "Title",
             value: "Колониальная сказка. «Жги», режиссер Кирилл Плетнев",
       },
       slug: {
             title: "Slug",
             value: "6643766f8e8d9b39fcbf818d677f4fbe",
       }
}]

Нужно из него сделать новый массив такой структуры:

newArr =[
     {
          id: value,
          title: value,
          slug: value
     },
     {
          id: value,
          title: value,
          slug: value
     }
]
  • Вопрос задан
  • 103 просмотра
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
arr.map(n => ({
  id: n.id.value,
  title: n.title.value,
  slug: n.slug.value
}))

или

arr.map(n => Object.entries(n).reduce((acc, [ k, v ]) => (acc[k] = v.value, acc), {}))

или

arr.map(n => Object.keys(n).reduce((acc, k) => ({ ...acc, [k]: n[k].value }), {}))

или

arr.map(n => Object.assign({}, ...Object.values(n).map(m => ({ [m.title.toLowerCase()]: m.value }))))
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
RomReed
@RomReed
JavaScript, Flutter, ReactNative, Redux, Firebase
let data = [{
 "id": {
         "title": "Id",
         "value": 19,
        },
  "title": {
         "title": "Title",
          "value": " Режиссёр \"Доктора Хауса\" снимет новый фильм"
   },
   "slug": {
         "title": "Slug",
         "value": "slug2334",
   }
},
{
     "id": {
            "title": "Id",
             "value": 8,
       },
       "title": {
              "title": "Title",
              "value": "Колониальная сказка. «Жги», режиссер Кирилл Плетнев",
       },
      "slug": {
           "title": "Slug",
          "value": "6643766f8e8d9b39fcbf818d677f4fbe",
       }
}]
let newObj=[];
Object.keys(data).map(
	el=>newObj.push({'id':data[el].id.value,'slug':data[el].slug.value,'title':data[el].title.value})
);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы