Kalaschnik
Kalaschnik

Reputation: 898

Remove outer Array of Objects in JavaScript

I’ve got an JavaScript Array of Objects. These Objects have a unique identifier as a String. Since there is no need to have them in an array, how do I get rid of the outer array?

When trying to pop, (un)shift, etc. I’m always losing either UniqueStringA or UniqueStringB

I added a jsbin link here: https://jsbin.com/sulozeyelo/edit?js,console

What I got

const arrObj = [
    {
        "UniqueStringA": {
        "abc": [
            {
            "PropPair": {
                "a": "c",
                "b": "d"
            }
            },
            {
            "PropPair": {
                "a": "c",
                "b": "d"
            }
            }
        ],
        "def": [],
        "efg": [
            {
            "PropPair": {
                "a": "c",
                "b": "d"
            }
            },
            {
            "PropPair": {
                "a": "c",
                "b": "d"
            }
            }
        ],
        "xyz": []
        }
    },
    {
        "UniqueStringB": {
        "abc": [
            {
            "PropPair": {
                "a": "c",
                "b": "d"
            }
            },
            {
            "PropPair": {
                "a": "c",
                "b": "d"
            }
            }
        ],
        "def": [],
        "efg": [
            {
            "PropPair": {
                "a": "c",
                "b": "d"
            }
            },
            {
            "PropPair": {
                "a": "c",
                "b": "d"
            }
            }
        ],
        "xyz": []
        }
    }
];

Result should be like:

const obj =     {
    "UniqueStringA": {
        "abc": [
        {
            "PropPair": {
            "a": "c",
            "b": "d"
            }
        },
        {
            "PropPair": {
            "a": "c",
            "b": "d"
            }
        }
        ],
        "def": [],
        "efg": [
        {
            "PropPair": {
            "a": "c",
            "b": "d"
            }
        },
        {
            "PropPair": {
            "a": "c",
            "b": "d"
            }
        }
        ],
        "xyz": []
    },
    "UniqueStringB": {
        "abc": [
        {
            "PropPair": {
            "a": "c",
            "b": "d"
            }
        },
        {
            "PropPair": {
            "a": "c",
            "b": "d"
            }
        }
        ],
        "def": [],
        "efg": [
        {
            "PropPair": {
            "a": "c",
            "b": "d"
            }
        },
        {
            "PropPair": {
            "a": "c",
            "b": "d"
            }
        }
        ],
        "xyz": []
    }
};

Upvotes: 1

Views: 6057

Answers (1)

qwermike
qwermike

Reputation: 1486

You can use Object.assign() and spread operator.

const arrObj = [
  {
    "uniqueStringA": {
      "abc": [{
        "propPair": {
          "A": "Hello",
          "B": "World"
        }
      }]
    }
  },
  {
    "uniqueStringB": {
      "abc": [{
        "propPair": {
          "A": "Hello",
          "B": "World"
        }
      }]
    }
  }];

const obj = Object.assign({}, ...arrObj );

console.log(obj);

Upvotes: 4

Related Questions