我有一个json对象,像这样,它是一个嵌套的json对象:
{
"9-10": {
"users": {
"9": {
"userID": 9,
"name": "Cunlay Zheng",
"avatarURL": "{\"small\":\"http://bs-staging.moselo.com/images/users/small/user9-1492746734\",\"medium\":\"http://bs-staging.moselo.com/images/users/medium/user9-1492746734\",\"large\":\"http://bs-staging.moselo.com/images/users/large/user9-1492746734\"}",
"roomID": "9-10",
"token": "0c4ea3da77d3c98107fd11c0c7c84ad8",
"socketID": "/moselo#Xa3cWnM4kwQkpijfAAAD"
},
"10": {
"userID": 10,
"name": "Dominic Vedericho",
"avatarURL": "{\"small\":\"http://bs-staging.moselo.com/images/users/small/user10-1492747647\",\"medium\":\"http://bs-staging.moselo.com/images/users/medium/user10-1492747647\",\"large\":\"http://bs-staging.moselo.com/images/users/large/user10-1492747647\"}",
"roomID": "9-10",
"token": "7f206d64fdfc71af4a783ab47516ef60",
"socketID": "/moselo#BW8boMD4rA1dhlCzAAAE"
}
}
},
"11-12": {
"users": {
"9": {
"userID": 11,
"name": "Cunlay Zheng",
"avatarURL": "{\"small\":\"http://bs-staging.moselo.com/images/users/small/user9-1492746734\",\"medium\":\"http://bs-staging.moselo.com/images/users/medium/user9-1492746734\",\"large\":\"http://bs-staging.moselo.com/images/users/large/user9-1492746734\"}",
"roomID": "9-10",
"token": "0c4ea3da77d3c98107fd11c0c7c84ad8",
"socketID": "/moselo#Xa3cWnM4kwQkpijfAAAD"
},
"10": {
"userID": 12,
"name": "Dominic Vedericho",
"avatarURL": "{\"small\":\"http://bs-staging.moselo.com/images/users/small/user10-1492747647\",\"medium\":\"http://bs-staging.moselo.com/images/users/medium/user10-1492747647\",\"large\":\"http://bs-staging.moselo.com/images/users/large/user10-1492747647\"}",
"roomID": "9-10",
"token": "7f206d64fdfc71af4a783ab47516ef60",
"socketID": "/moselo#BW8boMD4rA1dhlCzAAAE"
}
}
}
}
尝试使用 _filter 和 _find 如下所示,但没有运气
result = _.find(data, function(d) {
return d[0] === "9-10"
//also tried this
// return d._id === "9-10"
});
基本上我想用这个键“9-10”找到一个对象, 我用谷歌找到了一些解决办法,但没有任何效果。
需要一些建议。
它是一个对象,所以你不应该使用索引,例如
0
。您应该能够简单地使用密钥,就像这样 -
result = d["9-10"]
我已经解决了这个问题,通过这种方法,我不确定这是否是最好的方法,但这个解决方案是有效的。
var r = _.pickBy(data, function(value, key) {
return _.startsWith(key, "9-10");
});
感谢您的帮助。
试试这个
result = _.get(data,'9-10')
或result = _.get(data,'9-10', defaultValue)
。
以防万一您需要获取其他值:
users = _.get(data,['9-10','users']);
nine = _.get(data,['9-10','users', '9']);
很确定你明白了。
这里是 _.get 文档的链接:https://lodash.com/docs/#get
这是一个工作示例:
const data = {
"9-10": {
"users": {
"9": {
"userID": 9,
"name": "Cunlay Zheng",
"avatarURL": "{\"small\":\"http://bs-staging.moselo.com/images/users/small/user9-1492746734\",\"medium\":\"http://bs-staging.moselo.com/images/users/medium/user9-1492746734\",\"large\":\"http://bs-staging.moselo.com/images/users/large/user9-1492746734\"}",
"roomID": "9-10",
"token": "0c4ea3da77d3c98107fd11c0c7c84ad8",
"socketID": "/moselo#Xa3cWnM4kwQkpijfAAAD"
},
"10": {
"userID": 10,
"name": "Dominic Vedericho",
"avatarURL": "{\"small\":\"http://bs-staging.moselo.com/images/users/small/user10-1492747647\",\"medium\":\"http://bs-staging.moselo.com/images/users/medium/user10-1492747647\",\"large\":\"http://bs-staging.moselo.com/images/users/large/user10-1492747647\"}",
"roomID": "9-10",
"token": "7f206d64fdfc71af4a783ab47516ef60",
"socketID": "/moselo#BW8boMD4rA1dhlCzAAAE"
}
}
},
"11-12": {
"users": {
"9": {
"userID": 11,
"name": "Cunlay Zheng",
"avatarURL": "{\"small\":\"http://bs-staging.moselo.com/images/users/small/user9-1492746734\",\"medium\":\"http://bs-staging.moselo.com/images/users/medium/user9-1492746734\",\"large\":\"http://bs-staging.moselo.com/images/users/large/user9-1492746734\"}",
"roomID": "9-10",
"token": "0c4ea3da77d3c98107fd11c0c7c84ad8",
"socketID": "/moselo#Xa3cWnM4kwQkpijfAAAD"
},
"10": {
"userID": 12,
"name": "Dominic Vedericho",
"avatarURL": "{\"small\":\"http://bs-staging.moselo.com/images/users/small/user10-1492747647\",\"medium\":\"http://bs-staging.moselo.com/images/users/medium/user10-1492747647\",\"large\":\"http://bs-staging.moselo.com/images/users/large/user10-1492747647\"}",
"roomID": "9-10",
"token": "7f206d64fdfc71af4a783ab47516ef60",
"socketID": "/moselo#BW8boMD4rA1dhlCzAAAE"
}
}
}
}
// Using lodash 4.17.21
const result = _.get(data,'9-10');
console.log(result);
<script src="https://cdn.jsdelivr.net/npm/[email protected]/lodash.min.js"></script>