0

所以我不知道我为什么要为此苦苦挣扎。看来我应该能够使用 Lodash 或我认为的其他东西来做到这一点。

我有一个看起来像的对象。

  { "fdjkafdajkfasfjkdaslj": {
      "-LMUD-2APhiSLkEtVbM": {
        "profileName": "bob",
            "profilePic": "www.profilepic.com",
            "score": 73,
            "teamName": "lzs"
        }
    }
  }

我不会知道第一个键的结构。上面的例子。 "fdjkafdajkfasfjkdaslj""-LMUD-2APhiSLkEtVbM"

我真的只需要将这些键值推入一个数组。

       "profileName": "bob",
        "profilePic": "www.profilepic.com",
        "score": 73,
        "teamName": "lzs"

在 javascript 中完成此操作的最佳方法是什么(我实际上是一个 React.js)?我在想 Lodash 也许但还没有找到任何东西?我在 Json 中检索嵌套键/值数据的大部分搜索都表明您需要一个路径,但在这种情况下我将没有该路径。我不知道这个对象中的前 2 个键。我唯一拥有的是这个可预测的对象结构,在我的键/值数据之前有 2 个未知键。

4

3 回答 3

2

如果对象中只有一个键,如问题示例,那么您可以使用Object.keys()

const data = [];

const obj = { "fdjkafdajkfasfjkdaslj" {
      "-LMUD-2APhiSLkEtVbM": {
        "profileName": "bob",
            "profilePic": "www.profilepic.com",
            "score": 73,
            "teamName": "lzs"
        }
    }
  };
  
  const outerObj = obj[Object.keys(obj)[0]];
  
  const item = outerObj[Object.keys(outerObj)[0]];
  
  data.push(item);

于 2019-05-19T16:59:16.020 回答
1

我想你会想要使用Object.values.

const realData = Object.values( Object.values( weirdThing )[0] )[0]

yourArray.push(realData)

于 2019-05-19T16:59:37.150 回答
0

对于 JSON 字符串,可以在解析过程中找到:

var obj, json = '{"fdjkafdajkfasfjkdaslj":{"-LMUD-2APhiSLkEtVbM":{"profileName":"bob","profilePic":"www.profilepic.com","score":73,"teamName":"lzs"}}}'

JSON.parse(json, (k, v) => v.profileName ? obj = v : v)

console.log( obj )

于 2019-05-19T17:55:30.720 回答