Object.entries()

The Object.entries() metodu, verilen bir nesnenin sıralanabilir [anahtar, değer] çiftlerini for...in (en-US) döngüsünün sunacağı sırayla (for-in döngüsü, farklı olarak nesnenin prototip zincirindeki özelliklerini de sıralar) dizi olarak döner.

Sözdizimi

Object.entries(obj)

Parametreler

obj
Sıralanabilir özellik çiftleri [key, value] dönülecek olan nesne.

Dönüş değeri

Verilen nesnenin sıralanabilir özellik çiftlerini [key, value] içeren dizi

Tanım

Object.entries() elemanları object nesnesinin sıralanabilir özellik çiftlerine [key, value] karşılık gelen diziler olan bir dizi döner. Özelliklerin sırası, özellikler üzerinde döngü ile dönülmesi durumunda oluşacak sırayla aynıdır.

Örnekler

const obj = { foo: 'bar', baz: 42 };
console.log(Object.entries(obj)); // [ ['foo', 'bar'], ['baz', 42] ]

// dizi benzeri nesne
const obj = { 0: 'a', 1: 'b', 2: 'c' };
console.log(Object.entries(obj)); // [ ['0', 'a'], ['1', 'b'], ['2', 'c'] ]

// anahtarları rastgele sıralı olan dizi benzeri nesne
const anObj = { 100: 'a', 2: 'b', 7: 'c' };
console.log(Object.entries(anObj)); // [ ['2', 'b'], ['7', 'c'], ['100', 'a'] ]

// getFoo, sıralanabilir bir özellik değildir
const myObj = Object.create({}, { getFoo: { value() { return this.foo; } } });
myObj.foo = 'bar';
console.log(Object.entries(myObj)); // [ ['foo', 'bar'] ]

// nesne olmayan parametre nesneye dönüştürülür
console.log(Object.entries('foo')); // [ ['0', 'f'], ['1', 'o'], ['2', 'o'] ]

// ilkel tiplerin kendi özellikleri olmadığı için, boş dizi döner
console.log(Object.entries(100)); // [ ]

// anahtar-değer çiftlerinin üzerinden for-of döngüsü ile geçelim
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"
}

// Veya, Array ekstra metotlarını kullanarak geçelim
Object.entries(obj).forEach(([key, value]) => {
console.log(`${key} ${value}`); // "a 5", "b 7", "c 9"
});

Bir Object'in bir Map'e dönüştürülmesi

new Map() yapıcısı, entries üzerinde ilerlenebilir nesnesini ister. Object.entries ile, Object'ten Map'e kolayca dönüşüm yapabilirsiniz:

const obj = { foo: 'bar', baz: 42 };
const map = new Map(Object.entries(obj));
console.log(map); // Map { foo: "bar", baz: 42 }

Bir Object'in üzerinde ilerlemek

Array Destructuring kullanarak, nesnelerin üzerinde kolayca ilerleyebilirsiniz.

const obj = { foo: 'bar', baz: 42 };
Object.entries(obj).forEach(([key, value]) => console.log(`${key}: ${value}`)); // "foo: bar", "baz: 42"

Polyfill

Doğal olarak desteklemeyen eski ortamlara Object.entries desteği eklemek için, Object.entries'in gösterme amaçlı gerçeklemesini tc39/proposal-object-values-entries'de (IE desteğine ihtiyacınız yoksa), es-shims/Object.entries repertuarındaki polyfill ile, veya aşağıdaki gibi kullanıma hazır basit polyfill kullanabilirsiniz.

if (!Object.entries)   Object.entries = function( obj ){ var ownProps = Object.keys( obj ),   i = ownProps.length, resArray = new Array(i); // diziyi önden ayıralım     while (i--)   resArray[i] = [ownProps[i], obj[ownProps[i]]];     return resArray; };

Yukardaki polyfill kod parçası için IE < 9 desteğine ihtiyacınız varsa, aynı zamanda Object.keys polyfill desteğine de ihtiyaç duyacaksınız (Object.keys (en-US) sayfasındaki gibi)

Şartnameler

Specification Status Comment
ECMAScript (ECMA-262)
The definition of 'Object.entries' in that specification.
Living Standard İlk tanım.
ECMAScript 2017 (ECMA-262)
The definition of 'Object.entries' in that specification.
Standard  

Gezgin uyumluluğu

BCD tables only load in the browser

Ayrıca bakınız