Back to Content

RTCStatsReport: keys() method

files/en-us/web/api/rtcstatsreport/keys/index.md

latest2.3 KB
Original Source

{{APIRef("WebRTC")}}

The keys() method of the {{domxref("RTCStatsReport")}} interface returns a new iterator object that can be used to iterate through the keys for each element in the RTCStatsReport object, in insertion order.

The keys in the RTCStatsReport are unique string id values, which represent the monitored statistics objects from which the statistics are derived.

The method is otherwise the same as {{jsxref("Map.prototype.keys()")}}.

Syntax

js-nolint
keys()

Parameters

None.

Return value

A new iterable iterator object.

Examples

This example shows how to iterate through a {{domxref("RTCStatsReport")}} using the iterator returned by keys().

Given a variable myPeerConnection, which is an instance of RTCPeerConnection, the code calls getStats() with await to wait for the statistics report. It then uses a for...of loop, with the iterator returned by keys(), to iterate through the IDs. Each ID is used to get the corresponding statistics dictionary. The properties of statistics objects with the type of outbound-rtp are logged to the console (other objects are discarded).

js
const stats = await myPeerConnection.getStats();

for (const id of stats.keys()) {
  // Get dictionary associated with key (id)
  const stat = stats.get(id);
  if (stat.type !== "outbound-rtp") continue;
  Object.keys(stat).forEach((statName) => {
    console.log(`${statName}: ${report[statName]}`);
  });
}

Note that this examples is somewhat contrived. You could more easily iterate with {{domxref("RTCStatsReport.entries()","entries()")}} or {{domxref("RTCStatsReport.values()","values()")}} and not have to map the ID to a value. You can even iterate the {{domxref("RTCStatsReport")}} itself, as it has the [Symbol.iterator]() method!

Specifications

{{Specifications}}

Browser compatibility

{{Compat}}

See also

  • {{jsxref("Map.prototype.keys()")}}
  • {{domxref("RTCStatsReport.values()")}}
  • {{domxref("RTCStatsReport.entries()")}}