Javascript 如何从数组中的单个对象获取密钥?
我有一个FirebaseListObservable,它被循环通过,列表中的一个对象被通过,我如何获得通过的对象的键值 选中时,对象的单个实例将传递给函数,我需要获取键,但如果使用value.key或value.uid,则未定义 这是通过firebase阵列执行的循环Javascript 如何从数组中的单个对象获取密钥?,javascript,angular,firebase,firebase-realtime-database,Javascript,Angular,Firebase,Firebase Realtime Database,我有一个FirebaseListObservable,它被循环通过,列表中的一个对象被通过,我如何获得通过的对象的键值 选中时,对象的单个实例将传递给函数,我需要获取键,但如果使用value.key或value.uid,则未定义 这是通过firebase阵列执行的循环 <sebm-google-map-marker *ngFor="let m of markers | async" (markerClick)="test(m)" [latitude]="m.lat" [longitude]
<sebm-google-map-marker
*ngFor="let m of markers | async"
(markerClick)="test(m)"
[latitude]="m.lat"
[longitude]="m.lng"
我想获取正在传递的项目的密钥
您需要获取密钥,然后使用密钥在集合中循环: 首先创建一个密钥数组(可能在subscribe块中执行此操作,因为它看起来像代码中的可观察项): 然后使用键循环:
<sebm-google-map-marker
*ngFor="let mKey of markerKeys"
(markerClick)="test(markers[mKey])"
[latitude]="markers[mKey].lat"
[longitude]="markers[mKey].lng"
我相信Eeks33是正确的,但由于标记不是集合,而是集合的可观察对象,所以不能将其视为集合
试一试
然后,您应该能够在模板中迭代markersWithKeys
,其中每个项现在都有一个key属性
<sebm-google-map-marker
*ngFor="let m of markersWithKeys | async"
(markerClick)="test(m)"
[latitude]="m.lat"
[longitude]="m.lng"
请与其他人分享一些代码示例understand@abeyaz好了,谢谢你告诉我你能显示填充组件标记的代码吗?我认为一种解决方案是,当您从Firebase后端加载marker对象时,将其存储在marker对象中的项的键保存下来。
<sebm-google-map-marker
*ngFor="let mKey of markerKeys"
(markerClick)="test(markers[mKey])"
[latitude]="markers[mKey].lat"
[longitude]="markers[mKey].lng"
const addKeys = (collection => Object.keys(collection)
.map(key => collection[key] = key));
const markersWithKeys = markers.map(addKeys);
<sebm-google-map-marker
*ngFor="let m of markersWithKeys | async"
(markerClick)="test(m)"
[latitude]="m.lat"
[longitude]="m.lng"
test(m) {
console.log(m.key);
}