Object.entries() og Object.values() i JavaScript

Object.entries() og Object.values() metoder blev introduceret til JavaScript Object konstruktør med udgivelsen af ​​ECMAScript 2017 (ES8). Lad os tage et hurtigt kig på disse nyttige metoder.

Object.entries() Metode

Object.entries() metode tager et objekt som argument og returnerer et array med arrays af nøgleværdi-par:

const birds = {
    owl: '🦉',
    eagle: '🦅',
    duck: '🦆'
};

const entries = Object.entries(birds);
console.log(entries);

// [['owl', '🦉'], ['eagle', '🦅'], ['duck', '🦆']]

Rækkefølgen af ​​array-elementet afhænger ikke af, hvordan objektet blev defineret. Rækkefølgen er den samme som den, der leveres af en for...in løkke.

Generering gennem et objekt

Vi kan bruge Object.entries() at iterere over objekt også:

// using `for...of` loop
for (const [key, value] of Object.entries(birds)) {
    console.log(`${key}: ${value}`);
}

// owl: 🦉
// eagle: 🦅
// duck: 🦆

// using array destructuring
Object.entries(birds).forEach(([key, value]) => console.log(`${key}: ${value}`));

// owl: 🦉
// eagle: 🦅
// duck: 🦆

Konvertering af et objekt til et kort

Da kortkonstruktøren også tager en iterabel på entries for at initialisere et kortobjekt, Object.entries() metode kan bruges til at oprette et kort fra et objekt:

const map = new Map(Object.entries(birds));

console.log(map.size); // 3
console.log(map.has('owl')); // true
console.log(map.get('duck')); // 🦆

Object.values() Metode

Object.values() metoden fungerer meget som Object.entries() , men returnerer kun værdierne af de egne talrige egenskaber med strengnøgle i samme rækkefølge som angivet af for...in sløjfe:

const foods = {
    cake: '🍰',
    pizza: '🍕',
    candy: '🍬',
    icecream: '🍨'
};

const values = Object.values(foods);
console.log(values);

// ['🍰', '🍕', '🍬', '🍨']

Begge Object.values() og Object.entries() følg ikke prototypekæden og gentag kun de egenskaber, der er direkte tilføjet til det givne objekt. De ignorerer også alle ikke-tællelige egenskaber:

Object.defineProperty(foods, 'sushi', {
    value: '🍣',
    writable: true,
    configurable: true,
    enumerable: false
});

console.log(Object.values(foods));

// ['🍰', '🍕', '🍬', '🍨']

Konvertering af et objekt til sæt

Da sæt-konstruktøren accepterer en iterabel, med Object.values() , kan vi nemt konvertere en Object til en Set :

const set = new Set(Object.values(foods));

console.log(set.size); // 4
console.log(set.has('🍨')); // true