ES6 Конвертировать итерацию в сложность времени массива - PullRequest
0 голосов
/ 05 декабря 2018

Мне интересно, какова временная сложность преобразования итераций, например MapIterator, в массив.допустим, у меня есть этот код:

    const Component = ({ map }) => {
           return (
        <Fragment>
            {Array.from(map.values()).map(item => <div key={item.key}>{item.name}</div>)}
       </Fragment>
     )
}

какова временная сложность для каждого Array.from (), это то, о чем я думаю O (n), или это потому, что его MapIterator каким-то образом преобразован из массива, как вмассив быстрее.

Мой вариант использования заключается в том, что я хочу сохранить элементы (к которым необходимо получить доступ) в виде карты для проблем с производительностью, но я должен пробежаться по ним в виде массива.

для этой цели я могу сохранить в состоянии или использовать селекторы или тому подобное

что вы, ребята, думаете?

1 Ответ

0 голосов
/ 05 декабря 2018

Вы правы, что Array.from() - это O (n).Если вы беспокоитесь о производительности, самое простое, что вы можете сделать, это улучшить , а не повторять значения дважды .Array.from() уже принимает функцию map в качестве второго необязательного аргумента:

Array.from(map.values(), ({ key, name }) => <div key={key}>{name}</div>)
...