30秒学会 JavaScript 片段 · 2020年3月23日

30秒学会 JavaScript 片段 – toPairs

Creates an array of key-value pair arrays from an object or other iterable (object, array, string, set etc.).

Check if Symbol.iterator is defined and, if so, use Array.prototype.entries() to get an iterator for the given iterable, Array.from() to convert the result to an array of key-value pair arrays.
If Symbol.iterator is not defined for obj, use Object.entries() instead.

代码片段

const toPairs = obj =>
  obj[Symbol.iterator] instanceof Function && obj.entries instanceof Function
    ? Array.from(obj.entries())
    : Object.entries(obj);

使用样例

toPairs({ a: 1, b: 2 }); // [ ['a', 1], ['b', 2] ]
toPairs([2, 4, 8]); // [ [0, 2], [1, 4], [2, 8] ]
toPairs('shy'); // [ ['0', 's'], ['1', 'h'], ['2', 'y'] ]
toPairs(new Set(['a', 'b', 'c', 'a'])); // [ ['a', 'a'], ['b', 'b'], ['c', 'c'] ]