에 표시 할 키 값 쌍으로 전환하려는 간단한 개체가 SectionList
있습니다.
const DOBBY = {
foo: 'bar',
toto: ['hoge', 'piyo'],
};
나는 Objects.entries()
그것을 객체의 배열로 바꾸는 데 사용 했습니다.
const toArray = Object.entries(DOBBY).map(([ title, data ]) => ({ title, data }));
그래서 내가 돌아올 수 있도록 :
[
{ title: 'foo', data: 'bar' },
{ title: 'toto', data: ['hoge', 'piyo'] },
];
지금 SectionList
은 'bar'
세 행으로 나뉩니다 . 내가 얻을 수 있도록 배열에
넣는 방법 'bar'
:
[
{ title: 'foo', data: ['bar'] },
{ title: 'toto', data: ['hoge', 'piyo'] },
]
나는 Array.of()
그것을 할 것이라고 생각 하지만 그것을 어디에서 구현 해야하는지 또는 내가 할 수있는 일이 있는지 모르겠다..map()
간단히 data
하위 배열에 중첩 한 다음 다음을 사용하여 평면화 할 수 있습니다 Array.prototype.flat
.
data
배열 일 때 , 배열 [data]
이기도 한 단일 요소가있는 배열이므로 Array.flat
배열로 평면화합니다.data
문자열이, [data]
문자열의 배열 될 것이며, Array.flat
그것이 방식을 유지합니다const DOBBY = {
foo: 'bar',
toto: ['hoge', 'piyo'],
};
const toArray = Object.entries(DOBBY).map(([ title, data ]) => ({ title, data: [data].flat() }));
console.log(toArray);
물론, 약간 긴 방법으로 갈 수도 있지만, 배열 내에 배열을 불필요하게 중첩하지 않아도됩니다.
const DOBBY = {
foo: 'bar',
toto: ['hoge', 'piyo'],
};
const toArray = Object.entries(DOBBY).map(([ title, data ]) => {
return {
title,
data: Array.isArray(data) ? data : [data]
};
});
console.log(toArray);
Array.prototype.flat()
추가 배열 중첩을 수행 할 수 있기 때문에 방법은 속도가 느린 물론이다. 가독성을 위해 지불하는 희생입니다. 또한 매우 작은 개체 및 배열의 경우이 성능 오버 헤드는 무시할 수 있습니다.
https://jsperf.com/array-prototype-flat-vs-isarray/
+---------------------------------+------------+------------+------------+
| Test | Chrome 80 | Firefox 74 | Safari 13 |
+---------------------------------+------------+------------+------------+
| Array.prototype.flat() approach | 640k ops/s | 2.4m ops/s | 590k ops/s |
| Array.isArray approach | 2.6m ops/s | 2.7m ops/s | 650k ops/s |
+---------------------------------+------------+------------+------------+
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다