RTCStatsReport: keys() method

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.

The keys() method of the 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 Map.prototype.keys().

Syntax

js
keys()

Parameters

None.

Return value

A new iterable iterator object.

Examples

This example shows how to iterate through a 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 entries() or values() and not have to map the ID to a value. You can even iterate the RTCStatsReport itself, as it has the [Symbol.iterator]() method!

Specifications

Specification
WebRTC: Real-Time Communication in Browsers
# dom-rtcstatsreport

Browser compatibility

desktop mobile
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
keys
Chrome – Full support
Chrome 58 (Release date: 2017-04-19)
footnote Full support
Edge – Full support
Edge 79 (Release date: 2020-01-15)
footnote Full support
Firefox – Full support
Firefox 48 (Release date: 2016-08-02)
footnote Full support
Opera – Full support
Opera 45 (Release date: 2017-05-10)
footnote Full support
Safari – Full support
Safari 11 (Release date: 2017-09-19)
footnote Full support
Chrome Android – Full support
Chrome Android 58 (Release date: 2017-04-25)
footnote Full support
Firefox for Android – Full support
Firefox for Android 48 (Release date: 2016-08-02)
footnote Full support
Opera Android – Full support
Opera Android 43 (Release date: 2017-09-27)
footnote Full support
Safari on iOS – Full support
Safari on iOS 11 (Release date: 2017-09-19)
footnote Full support
Samsung Internet – Full support
Samsung Internet 7 (Release date: 2018-03-16)
footnote Full support
WebView Android – Full support
WebView Android 58 (Release date: 2017-04-25)
footnote Full support
WebView on iOS – Full support
WebView on iOS 11 (Release date: 2017-09-19)
footnote Full support

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support

See also