объединить объект массива для создания нового объекта массива в javascript - PullRequest
0 голосов
/ 19 июня 2020

Как создать новый объект массива, объединив объект массива внутри массива. У меня есть obj, объедините массив items в каждом объекте и создайте новый объект массива в javascript.


function newarray(obj){
 return obj.map(e=>e.items);
}
var obj =[
  {
    "id": 1,
    "store": "10",
    "items": [
      {
        "name": "sample1",
        "total": 20,
        "store": "10"
      },
      {
        "name": "sample2",
        "total": 10,
        "store": "10"
      }
    ]
  },
  {
    "id": 1,
    "store": "11",
    "items": [
      {
        "name": "sample3",
        "total": 10,
        "store": "11"
      },
      {
        "name": "sample4",
        "total": 10,
        "store": "11"
      }
    ]
  }
]

Ожидаемый результат:

[
  {
    "name": "sample1",
    "total": 20,
    "store": "10"
  },
  {
    "name": "sample2",
    "total": 10,
    "store": "10"
  },
  {
    "name": "sample3",
    "total": 10,
    "store": "11"
  },
  {
    "name": "sample4",
    "total": 10,
    "store": "11"
  }
]

Ответы [ 3 ]

2 голосов
/ 19 июня 2020

Вы можете использовать карту + плоский

const obj = [
    {
        id: 1,
        store: '10',
        items: [
            {
                name: 'sample1',
                total: 20,
                store: '10',
            },
            {
                name: 'sample2',
                total: 10,
                store: '10',
            },
        ],
    },
    {
        id: 1,
        store: '11',
        items: [
            {
                name: 'sample3',
                total: 10,
                store: '11',
            },
            {
                name: 'sample4',
                total: 10,
                store: '11',
            },
        ],
    },
];

const result = obj.map(o => o.items).flat();

console.log(result);
1 голос
/ 19 июня 2020

Вы можете взять одну л oop с Array#flatMap.

const
    flat = array => array.flatMap(({ items }) => items),
    array = [{ id: 1, store: "10", items: [{ name: "sample1", total: 20, store: "10" }, { name: "sample2", total: 10, store: "10" }] }, { id: 1, store: "11", items: [{ name: "sample3", total: 10, store: "11" }, { name: "sample4", total: 10, store: "11" }] }],
    result = flat(array);

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
0 голосов
/ 19 июня 2020

Также будет работать только уменьшение:

const combined = obj.reduce((acc, item) => {
  return [ ...acc, ...item.items ];
}, []);
console.log(combined)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...