将具有未知路径的嵌套Json值推入Javascript中的数组

时间:2019-05-19 16:53:03

标签: javascript json

所以我不知道我为什么要为此苦苦挣扎。我认为应该可以使用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个未知键。

3 个答案:

答案 0 :(得分: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);

答案 1 :(得分:1)

我想您会使用// Output {15, 15, 15, 15, 15} // Expected output 1, 1+2=3, 3+3=6, 6+4=10, 10+5=15 {1, 3, 6, 10, 15}

Object.values

答案 2 :(得分: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 )