Сначала отметим, что _. First - это псевдоним _.head , просто чтобы вы знали и не запутались, почему они оба делают одно и то же.
Кроме того, существует разница между _.sortBy
и _.orderBy
, которая всегда появляется и также должна быть отмечена:
_. SortBy позволитВы можете сортировать по нотации lodash short
или с помощью функции, но только в порядке возрастания !
_. orderBy делает то же самое, нопозволяет вам указать несколько полей с их порядком сортировки (asc / desc) .
Рассмотрим следующие примеры:
var users = [
{ 'user': 'fred', 'age': 1, 'drinks': 1 },
{ 'user': 'barney', 'age': 4, 'drinks': 3 },
{ 'user': 'brat', 'age': 4, 'drinks': 6 },
{ 'user': 'josh', 'age': 2, 'drinks': 2 },
{ 'user': 'jim', 'age': 2, 'drinks': 10 },
{ 'user': 'barney', 'age': 3, 'drinks': 5}
];
const sortBy = _.sortBy(users, ['age','drinks'])
const orderBy = _.orderBy(users, ['age', 'drinks'], ['asc', 'desc'])
console.log('sortBy', sortBy)
console.log('orderBy', orderBy)
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.min.js"></script>
Как видно из результатов (когда пользователи имеют одинаковый возраст), когда дело доходит до сортировки нескольких полей, преимущество достигает orderBy
из-за егоудобство.
Итак, вернемся к вашему вопросу:
Вы можете использовать любой из них:
// ONLY ASC
_.head(_.sortBy(window.locations, ['is_primary']));
_.first(_.sortBy(window.locations, ['is_primary']));
// ASC & DESC
_.head(_.orderBy(window.locations, ['is_primary'], ['desc']));
_.first(_.orderBy(window.locations, ['is_primary'], ['desc']));
И последнее цепочка в целом для удобства и удобочитаемости в основном,Если у вас есть более 2 операций, становится сложно читать, поэтому правило, как правило, если больше 2, то цепочка, но если равно или меньше, этого нет.
В большинстве примеров, где используется сцепление, оно применяется более чем к 2 операциям.
Также, как указано, только для объединения цепочек вам нужен дополнительный код из lodash, который вам может не понадобиться.