2

i want to push my retrieved results which is an inline string result to my array object item

Here is my code :

  arrayObject.push({ type: "type", item: itemArray });

  arrayObject.forEach((elementItem) => {
    global.forEach((element) => {
      const { items } = element;
      for (const item in items) {
        const title = items[item].title;
        elementItem.item.push({ title });
      }
    });
  });

And here is my json file that i retrieve from global, items and title

  global: [
    {
      items: {
        xxx: {
          title: 'result1',
        }
      },
    }
 ]

The result i want is like this :

[ { type: 'xxx', item: [ {name: result1 } ] } ]
brxnzaz
  • 481
  • 1
  • 4
  • 15

1 Answers1

0

Here i've used reduce and object.values to produce your expected outcome.

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_objects/Object/values

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment

const global = [{
    way: 'type1',
    items: {
      get: {
        title: 'result1',
      },
      post: {
        title: 'result2',
      },
      put: {
        title: 'result3',
      },
    },
  },
  {
    way: 'type2',
    items: {
      get: {
        title: 'test1',
      },
      post: {
        title: 'test2',
      },
      put: {
        title: 'test3',
      },
    },
  },
]

function mapJsonToTypes(arr) {
  const typeAndTitles = (acc, {items, way: type}) => {
    return [...acc, {type, item: getTitlesFromItems(items)}]
  }

  return arr.reduce(typeAndTitles, []);
}

function getTitlesFromItems(items = {}) {
  return Object.values(items).map(({ title }) => title)
}



console.log(mapJsonToTypes(global));
Joe Warner
  • 3,335
  • 1
  • 14
  • 41