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.
typescript
const isArrayLike = (obj: any): obj is Array<any> => {
return (
obj[Symbol.iterator] instanceof Function && obj.entries instanceof Function
);
};
const toPairs = (obj: any) =>
isArrayLike(obj) ? Array.from(obj.entries()) : Object.entries(obj);
typescript
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'] ]
toPairs(undefined); //[]
toPairs(null); //[]
toPairs(true); //[]
toPairs(false); //[]