기록
Object.values, Object.entries, Object.fromEntries, flat, allSettled
als982001
2024. 5. 12. 15:15
1. Object.values
- 객체의 key-value에서 value들을 배열로 반환하는 메서드
const obj = {
name: "john",
age: 12
};
console.log(Object.values(obj)); // [ "john", 12 ]
2. Object.entries
- 객체의 모든 key-value 쌍을 [key, value] 형태들로 정리한 배열을 반환하는 메서드
const obj = {
name: "john",
age: 12
};
const entries = Object.entries(obj);
console.log(entries); // [ ['name', 'john'], ['age', 12] ]
3. Object.fromEntries
- entries와 반대로, [key, value] 형태의 배열들을 요소로 가지는 배열들을 객체로 만드는 메서드
const newUserInfos = [["name", "peter"], ["age", 21]];
const newUser = Object.fromEntries(newUserInfos);
console.log(newUser); // {name: 'peter', age: 21}
4. Array.prototype.flat([depth])
- 배열 내의 중첩된 배열을 평탄화하여 단일 배열로 만드는 메서드
- 선택적 매개변수 depth는 평탄화할 깊이 수준을 지정. 기본값은 1
- depth가 1이면 바로 하위 수준의 배열만 평탄화하고, 더 큰 값을 지정하면 해당 수준만큼 깊은 배열도 평탄화
- 무한한 깊이를 평탄화하려면 Infinity를 사용
[1, [2, [3, [4]], 5]].flat(); // [1, 2, [3, [4]], 5]
[1, [2, [3, [4]], 5]].flat(2); // [1, 2, 3, [4], 5]
[1, [2, [3, [4]], 5]].flat(Infinity); // [1, 2, 3, 4, 5]
5. Promise.allSettled()
- 여러 프로미스를 포함하는 이터러블을 받아, 모든 프로미스가 완료될 때까지 기다린 후, 각 프로미스의 결과를 나타내는 객체 배열을 반환
- 반환된 각 객체는 {status, value} 또는 {status, reason} 형태로, 성공한 프로미스는 status: 'fulfilled'와 value를 포함하고, 실패한 프로미스는 status: 'rejected'와 reason을 포함
- Promise.all()과는 달리, 어떤 프로미스가 거부되어도 중단되지 않고 모든 결과를 기다림
const promises = [
Promise.resolve('success1'),
Promise.reject('error'),
Promise.resolve('success2')
];
Promise.allSettled(promises)
.then(results => {
results.forEach(result => console.log(result));
// {status: "fulfilled", value: "success1"}
// {status: "rejected", reason: "error"}
// {status: "fulfilled", value: "success2"}
});