Object.entries()
Baseline
Widely available
This feature is well established and works across many devices and browser versions. Itâs been available across browsers since маÑÑ 2017 г..
Object.entries() меÑод возвÑаÑÐ°ÐµÑ Ð¼Ð°ÑÑив ÑобÑÑвеннÑÑ
пеÑеÑиÑлÑемÑÑ
ÑвойÑÑв Ñказанного обÑекÑа в ÑоÑмаÑе [key, value], в Ñом же поÑÑдке, ÑÑо и в Ñикле for...in (ÑазниÑа в Ñом, ÑÑо for-in пеÑеÑиÑлÑÐµÑ ÑвойÑÑва из ÑепоÑки пÑоÑоÑипов). ÐоÑÑдок ÑлеменÑов в маÑÑиве коÑоÑÑй возвÑаÑаеÑÑÑ Object.entries() не завиÑÐ¸Ñ Ð¾Ñ Ñого как обÑÐµÐºÑ Ð¾Ð±ÑÑвлен. ÐÑли ÑÑÑеÑÑвÑÐµÑ Ð½ÐµÐ¾Ð±Ñ
одимоÑÑÑ Ð² опÑеделÑнном поÑÑдке, Ñо маÑÑив должен бÑÑÑ Ð¾ÑÑоÑÑиÑован до вÑзова меÑода, напÑÐ¸Ð¼ÐµÑ Object.entries(obj).sort((a, b) => a[0] - b[0]);.
ÐнÑеÑакÑивнÑй пÑимеÑ
const object1 = {
a: "somestring",
b: 42,
};
for (const [key, value] of Object.entries(object1)) {
console.log(`${key}: ${value}`);
}
// Expected output:
// "a: somestring"
// "b: 42"
СинÑакÑиÑ
Object.entries(obj)
ÐаÑамеÑÑÑ
obj-
ÐбÑекÑ, ÑÑи пеÑеÑиÑлимÑе ÑвойÑÑва бÑдÑÑ Ð²Ð¾Ð·Ð²ÑаÑÐµÐ½Ñ Ð² виде маÑÑива
[key, value].
ÐозвÑаÑаемое знаÑение
ÐаÑÑив пеÑеÑиÑлений ÑобÑÑвеннÑÑ
ÑвойÑÑв обÑекÑа Ñ Ð¿Ð°Ñами [key, value].
ÐпиÑание
Object.entries() возвÑаÑÐ°ÐµÑ Ð¼Ð°ÑÑив, ÑлеменÑами коÑоÑого ÑвлÑÑÑÑÑ Ð¼Ð°ÑÑивÑ, ÑооÑвеÑÑÑвÑÑÑие пеÑеÑиÑлÑÐµÐ¼Ð¾Ð¼Ñ ÑвойÑÑÐ²Ñ Ð¿Ð°ÑÑ [key, value], найденной пÑÑмо в object. ÐоÑÑдок ÑвойÑÑв ÑÐ¾Ñ Ð¶Ðµ, ÑÑо и пÑи пÑоÑ
ождении Ñиклом по ÑвойÑÑвам обÑекÑа вÑÑÑнÑÑ.
ÐÑимеÑÑ
var obj = { foo: "bar", baz: 42 };
console.log(Object.entries(obj)); // [ ['foo', 'bar'], ['baz', 42] ]
// маÑÑив как обÑекÑ
var obj = { 0: "a", 1: "b", 2: "c" };
console.log(Object.entries(obj)); // [ ['0', 'a'], ['1', 'b'], ['2', 'c'] ]
// маÑÑив как обÑÐµÐºÑ c random ÑоÑÑиÑовкой клÑÑей
var an_obj = { 100: "a", 2: "b", 7: "c" };
console.log(Object.entries(an_obj)); // [ ['2', 'b'], ['7', 'c'], ['100', 'a'] ]
// getFoo is property which isn't enumerable
var my_obj = Object.create(
{},
{
getFoo: {
value: function () {
return this.foo;
},
},
},
);
my_obj.foo = "bar";
console.log(Object.entries(my_obj)); // [ ['foo', 'bar'] ]
// non-object argument will be coerced to an object
console.log(Object.entries("foo")); // [ ['0', 'f'], ['1', 'o'], ['2', 'o'] ]
// returns an empty array for any primitive type, since primitives have no own properties
console.log(Object.entries(100)); // [ ]
// iterate through key-value gracefully
const obj = { a: 5, b: 7, c: 9 };
for (const [key, value] of Object.entries(obj)) {
console.log(`${key} ${value}`); // "a 5", "b 7", "c 9"
}
// Or, using array extras
Object.entries(obj).forEach(([key, value]) => {
console.log(`${key} ${value}`); // "a 5", "b 7", "c 9"
});
ÐÑеобÑазование Object в Map
ÐонÑÑÑÑкÑÐ¾Ñ new Map() пÑÐ¸Ð½Ð¸Ð¼Ð°ÐµÑ Ð¿Ð¾Ð²ÑоÑение знаÑений. С Object.entries Ð²Ñ Ð»ÐµÐ³ÐºÐ¾ можеÑе пÑеобÑазоваÑÑ Object в Map:
var obj = { foo: "bar", baz: 42 };
var map = new Map(Object.entries(obj));
console.log(map); // Map { foo: "bar", baz: 42 }
ÐÑеÑаÑÐ¸Ñ Ð¿Ð¾ Object
ÐÑполÑзÑÑ Ð¼ÐµÑод РазбоÑа ÐаÑÑивов ÐÑ Ð¼Ð¾Ð¶ÐµÑе легко иÑеÑиÑоваÑÑ Ð¾Ð±ÑекÑÑ.
const obj = { foo: 'bar', baz: 42 };
Object.entries(obj).forEach(([key, value]) => console.log(`${key}: ${value}`)); // "foo: bar", "baz: 42"
ÐолиÑил
ЧÑÐ¾Ð±Ñ Ð´Ð¾Ð±Ð°Ð²Ð¸ÑÑ Ð¿Ð¾Ð´Ð´ÐµÑÐ¶ÐºÑ Object.entries в более ÑÑаÑÑÑ
окÑÑжениÑÑ
, коÑоÑÑе не поддеÑживаÑÑ ÐµÐ³Ð¾ наÑивно, Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе найÑи полиÑил в tc39/proposal-object-values-entries или es-shims/Object.entries ÑепозиÑоÑиÑÑ
.
СпеÑиÑикаÑии
| Specification |
|---|
| ECMAScript® 2027 Language Specification> # sec-object.entries> |