如何在不知道子元素的键的情况下获取子元素的值?下面的示例数据结构;
->cars
-->3282jasjd893j: doors
-->819idid82jkdf: windows
-->fjf842jr8448r: audi
我需要在不知道钥匙的情况下获取“门”,“窗户”,“奥迪”的值。
任何建议都将不胜感激!
答案 0 :(得分:1)
非常感谢您的所有意见和建议。我现在得到了答案,现在是:
let inputArray = [];
snapshot.forEach(snap => {
inputArray.push(snap.val());
return false;
});
答案 1 :(得分:1)
虽然你回答了自己的问题,但这可能不是一个好的长期解决方案。
例如:假设您想要门节点并且有100,000个其他节点。您将必须加载所有100,000并迭代它们以定位节点。这可能会超出设备的容量并导致用户体验不畅。
更好的答案是修复结构:
{"monthYear": "08.2017":[
{"referenzDatum": 2017-08-03},... },
{"referenzDatum": 2017-08-02},... },
{"referenzDatum": 2017-08-01},... },]},
{"monthYear": "07.2017":[
{"referenzDatum": 2017-07-03},... },
{"referenzDatum": 2017-07-02},... }, ...]}
现在您可以简单地查询cars->项目节点的“门”,它将返回您想要的节点 - 无需迭代!
var oldDate: string;
var newDate: string;
sortedLogLine.entries = [];
this.sortedLog = [];
for (var i = 0; i < entries.length; i++) {
newDate = entries[i].referenceDate.substring(0, 7).split('-').reverse().join('.');
if (oldDate == newDate) {
sortedLogLine.entries.push(entries[i]);
}
if (!oldDate) {
sortedLogLine.entries.push(entries[i]);
sortedLogLine.monthYear = newDate;
oldDate = newDate;
}
if (oldDate != newDate) {
pushSortedLogLine.entries = sortedLogLine.entries.slice(0);
pushSortedLogLine.monthYear = oldDate;
this.sortedLog.push(pushSortedLogLine);
sortedLogLine.entries = [];
sortedLogLine.entries.push(entries[i]);
sortedLogLine.monthYear = newDate;
oldDate = newDate;
}
}
this.sortedLog.push(sortedLogLine);