{
    "data": {
        "question": {
            "questionId": "2769",
            "questionFrontendId": "2675",
            "boundTopicId": null,
            "title": "Array of Objects to Matrix",
            "titleSlug": "array-of-objects-to-matrix",
            "content": "<p>Write a function that converts an array of objects&nbsp;<code>arr</code> into a matrix <code>m</code>.</p>\n\n<p><code>arr</code>&nbsp;is an array of objects or arrays. Each item in the array can be deeply nested with child arrays and child objects. It can also contain numbers, strings, booleans, and&nbsp;null values.</p>\n\n<p>The first row <code>m</code>&nbsp;should be the column names. If there is no nesting, the column names are the unique keys within the objects. If there is nesting, the column names&nbsp;are the respective paths in the object separated by <code>&quot;.&quot;</code>.</p>\n\n<p>Each of the remaining rows corresponds to an object in&nbsp;<code>arr</code>. Each value in the matrix corresponds to a value in an object. If a given object doesn&#39;t contain a value for a given column, the cell should contain an empty string&nbsp;<code>&quot;&quot;</code>.</p>\n\n<p>The colums in the matrix should be in <strong>lexographically ascending</strong> order.</p>\n\n<p>&nbsp;</p>\n<p><strong class=\"example\">Example 1:</strong></p>\n\n<pre>\n<strong>Input:</strong> \narr = [\n&nbsp; {&quot;b&quot;: 1, &quot;a&quot;: 2},\n&nbsp; {&quot;b&quot;: 3, &quot;a&quot;: 4}\n]\n<strong>Output:</strong> \n[\n&nbsp; [&quot;a&quot;, &quot;b&quot;],\n&nbsp; [2, 1],\n&nbsp; [4, 3]\n]\n\n<strong>Explanation:</strong>\nThere are two unique column names in the two objects: &quot;a&quot; and &quot;b&quot;.\n&quot;a&quot; corresponds with [2, 4].\n&quot;b&quot; coresponds with [1, 3].\n</pre>\n\n<p><strong class=\"example\">Example 2:</strong></p>\n\n<pre>\n<strong>Input:</strong> \narr = [\n&nbsp; {&quot;a&quot;: 1, &quot;b&quot;: 2},\n&nbsp; {&quot;c&quot;: 3, &quot;d&quot;: 4},\n&nbsp; {}\n]\n<strong>Output:</strong> \n[\n&nbsp; [&quot;a&quot;, &quot;b&quot;, &quot;c&quot;, &quot;d&quot;],\n&nbsp; [1, 2, &quot;&quot;, &quot;&quot;],\n&nbsp; [&quot;&quot;, &quot;&quot;, 3, 4],\n&nbsp; [&quot;&quot;, &quot;&quot;, &quot;&quot;, &quot;&quot;]\n]\n\n<strong>Explanation:</strong>\nThere are 4 unique column names: &quot;a&quot;, &quot;b&quot;, &quot;c&quot;, &quot;d&quot;.\nThe first object has values associated with &quot;a&quot; and &quot;b&quot;.\nThe second object has values associated with &quot;c&quot; and &quot;d&quot;.\nThe third object has no keys, so it is just a row of empty strings.\n</pre>\n\n<p><strong class=\"example\">Example 3:</strong></p>\n\n<pre>\n<strong>Input:</strong> \narr = [\n&nbsp; {&quot;a&quot;: {&quot;b&quot;: 1, &quot;c&quot;: 2}},\n&nbsp; {&quot;a&quot;: {&quot;b&quot;: 3, &quot;d&quot;: 4}}\n]\n<strong>Output:</strong> \n[\n&nbsp; [&quot;a.b&quot;, &quot;a.c&quot;, &quot;a.d&quot;],\n&nbsp; [1, 2, &quot;&quot;],\n&nbsp; [3, &quot;&quot;, 4]\n]\n\n<strong>Explanation:</strong>\nIn this example, the objects are nested. The keys represent the full path to each value separated by periods.\nThere are three paths: &quot;a.b&quot;, &quot;a.c&quot;, &quot;a.d&quot;.\n</pre>\n\n<p><strong class=\"example\">Example 4:</strong></p>\n\n<pre>\n<strong>Input:</strong> \narr = [\n&nbsp; [{&quot;a&quot;: null}],\n&nbsp; [{&quot;b&quot;: true}],\n&nbsp; [{&quot;c&quot;: &quot;x&quot;}]\n]\n<strong>Output:</strong> \n[\n&nbsp; [&quot;0.a&quot;, &quot;0.b&quot;, &quot;0.c&quot;],\n&nbsp; [null, &quot;&quot;, &quot;&quot;],\n&nbsp; [&quot;&quot;, true, &quot;&quot;],\n&nbsp; [&quot;&quot;, &quot;&quot;, &quot;x&quot;]\n]\n\n<strong>Explanation:</strong>\nArrays are also considered objects with their keys being their indices.\nEach array has one element so the keys are &quot;0.a&quot;, &quot;0.b&quot;, and &quot;0.c&quot;.\n</pre>\n\n<p><strong class=\"example\">Example 5:</strong></p>\n\n<pre>\n<strong>Input:</strong> \narr = [\n  {},\n&nbsp; {},\n&nbsp; {},\n]\n<strong>Output:</strong> \n[\n&nbsp; [],\n&nbsp; [],\n&nbsp; [],\n&nbsp; []\n]\n\n<strong>Explanation:</strong>\nThere are no keys so every row is an empty array.</pre>\n\n<p>&nbsp;</p>\n<p><strong>Constraints:</strong></p>\n\n<ul>\n\t<li><code>1 &lt;= arr.length &lt;= 1000</code></li>\n\t<li><code>unique keys &lt;= 1000</code></li>\n</ul>\n",
            "translatedTitle": null,
            "translatedContent": null,
            "isPaidOnly": false,
            "difficulty": "Medium",
            "likes": 14,
            "dislikes": 2,
            "isLiked": null,
            "similarQuestions": "[{\"title\": \"JSON Deep Equal\", \"titleSlug\": \"json-deep-equal\", \"difficulty\": \"Medium\", \"translatedTitle\": null}, {\"title\": \"Convert Object to JSON String\", \"titleSlug\": \"convert-object-to-json-string\", \"difficulty\": \"Medium\", \"translatedTitle\": null}]",
            "exampleTestcases": "[{\"b\":1,\"a\":2},{\"b\":3,\"a\":4}]\n[{\"a\":1,\"b\":2},{\"c\":3,\"d\":4},{}]\n[{\"a\":{\"b\":1,\"c\":2}},{\"a\":{\"b\":3,\"d\":4}}]\n[[{\"a\":null}],[{\"b\":true}],[{\"c\":\"x\"}]]\n[{},{},{}]",
            "categoryTitle": "JavaScript",
            "contributors": [],
            "topicTags": [],
            "companyTagStats": null,
            "codeSnippets": [
                {
                    "lang": "JavaScript",
                    "langSlug": "javascript",
                    "code": "/**\n * @param {Array} arr\n * @return {Matrix}\n */\nvar jsonToMatrix = function(arr) {\n    \n};",
                    "__typename": "CodeSnippetNode"
                },
                {
                    "lang": "TypeScript",
                    "langSlug": "typescript",
                    "code": "function jsonToMatrix(arr: any[]): (string | number | boolean | null)[] {\n\n};",
                    "__typename": "CodeSnippetNode"
                }
            ],
            "stats": "{\"totalAccepted\": \"207\", \"totalSubmission\": \"321\", \"totalAcceptedRaw\": 207, \"totalSubmissionRaw\": 321, \"acRate\": \"64.5%\"}",
            "hints": [
                "How could you split the problem up into sub-problems?",
                "1.) Write a function that converts a single object into a dictionary that maps the path name to values. You can solve this recursively by keeping track of current path list.",
                "2.) Write a function that converts a list of dictionaries into a matrix. Start by creating a list of all possible paths in any of the dictionaries. This will represent the columns."
            ],
            "solution": null,
            "status": null,
            "sampleTestCase": "[{\"b\":1,\"a\":2},{\"b\":3,\"a\":4}]",
            "metaData": "{\n  \"name\": \"jsonToMatrix\",\n  \"params\": [\n    {\n      \"name\": \"arr\",\n      \"type\": \"string\"\n    }\n  ],\n  \"return\": {\n    \"type\": \"string\"\n  },\n  \"languages\": [\n    \"typescript\",\n    \"javascript\"\n  ],\n  \"manual\": true\n}",
            "judgerAvailable": true,
            "judgeType": "large",
            "mysqlSchemas": [],
            "enableRunCode": true,
            "enableTestMode": false,
            "enableDebugger": false,
            "envInfo": "{\"javascript\": [\"JavaScript\", \"<p><code>Node.js 16.13.2</code>.</p>\\r\\n\\r\\n<p>Your code is run with <code>--harmony</code> flag, enabling <a href=\\\"http://node.green/\\\" target=\\\"_blank\\\">new ES6 features</a>.</p>\\r\\n\\r\\n<p><a href=\\\"https://lodash.com\\\" target=\\\"_blank\\\">lodash.js</a> library is included by default.</p>\\r\\n\\r\\n<p>For Priority Queue / Queue data structures, you may use 5.3.0 version of <a href=\\\"https://github.com/datastructures-js/priority-queue/tree/fb4fdb984834421279aeb081df7af624d17c2a03\\\" target=\\\"_blank\\\">datastructures-js/priority-queue</a> and 4.2.1 version of <a href=\\\"https://github.com/datastructures-js/queue/tree/e63563025a5a805aa16928cb53bcd517bfea9230\\\" target=\\\"_blank\\\">datastructures-js/queue</a>.</p>\"], \"typescript\": [\"Typescript\", \"<p><code>TypeScript 4.5.4, Node.js 16.13.2</code>.</p>\\r\\n\\r\\n<p>Your code is run with <code>--harmony</code> flag, enabling <a href=\\\"http://node.green/\\\" target=\\\"_blank\\\">new ES2020 features</a>.</p>\\r\\n\\r\\n<p><a href=\\\"https://lodash.com\\\" target=\\\"_blank\\\">lodash.js</a> library is included by default.</p>\"]}",
            "libraryUrl": null,
            "adminUrl": null,
            "challengeQuestion": null,
            "__typename": "QuestionNode"
        }
    }
}