Страницы

Поиск по вопросам

суббота, 20 октября 2018 г.

Нужен ли сейчас underscrore?

Какие возможности underscore вы используете? Например, в нём есть функция each. Зачем она нужна, если теперь есть forEach, map в обычном js? Я так понимаю эта библиотека была актуальна когда не было ES5?


Ответ

Нет не нужен, можно родными средствами языка делать. Интерес к библиотекм постепенно снижается. Вот динамика запросов из гугла:

Сравните сами:
Массивы
_.concat
// Underscore/Lodash var array = [1] var other = _.concat(array, 2, [3], [ [4] ])
console.log(other) // результат: [1, 2, 3, [4]]
// Native var array = [1] var other = array.concat(2, [3], [ [4] ])
console.log(other) // результат: [1, 2, 3, [4]]
_.fill
// Underscore/Lodash var array = [1, 2, 3]
_.fill(array, 'a')
console.log(array) // результат: ['a', 'a', 'a']
_.fill(Array(3), 2) // результат: [2, 2, 2]
_.fill([4, 6, 8, 10], '*', 1, 3) // результат: [4, '*', '*', 10]
// Native var array = [1, 2, 3]
array.fill('a')
console.log(array) // результат: ['a', 'a', 'a']
Array(3).fill(2) // результат: [2, 2, 2]
[4, 6, 8, 10].fill('*', 1, 3) // результат: [4, '*', '*', 10]
_.find
// Underscore/Lodash var users = [{ 'user': 'barney', 'age': 36, 'active': true }, { 'user': 'fred', 'age': 40, 'active': false }, { 'user': 'pebbles', 'age': 1, 'active': true }]
_.find(users, function(o) { return o.age < 40; }) // результат: object for 'barney'
// Native var users = [{ 'user': 'barney', 'age': 36, 'active': true }, { 'user': 'fred', 'age': 40, 'active': false }, { 'user': 'pebbles', 'age': 1, 'active': true }]
users.find(function(o) { return o.age < 40; }) // результат: object for 'barney'
_.findIndex
// Underscore/Lodash var users = [{ 'user': 'barney', 'age': 36, 'active': true }, { 'user': 'fred', 'age': 40, 'active': false }, { 'user': 'pebbles', 'age': 1, 'active': true }]
var index = _.findIndex(users, function(o) { return o.age >= 40; }) console.log(index) // результат: 1
// Native var users = [{ 'user': 'barney', 'age': 36, 'active': true }, { 'user': 'fred', 'age': 40, 'active': false }, { 'user': 'pebbles', 'age': 1, 'active': true }]
var index = users.findIndex(function(o) { return o.age >= 40; }) console.log(index) // результат: 1
_.indexOf
// Underscore/Lodash var array = [2, 9, 9] var result = _.indexOf(array, 2) console.log(result) // результат: 0
// Native var array = [2, 9, 9] var result = array.indexOf(2) console.log(result) // результат: 0
_.join
// Lodash var result = _.join(['one', 'two', 'three'], '--') console.log(result) // результат: 'one--two--three'
// Native var result = ['one', 'two', 'three'].join('--') console.log(result) // результат: 'one--two--three'
_.lastIndexOf
// Underscore/Lodash var array = [2, 9, 9, 4, 3, 6] var result = _.lastIndexOf(array, 9) console.log(result) // результат: 2
// Native var array = [2, 9, 9, 4, 3, 6] var result = array.lastIndexOf(9) console.log(result) // результат: 2
_.reverse
// Lodash var array = [1, 2, 3] console.log(_.reverse(array)) // результат: [3, 2, 1]
// Native var array = [1, 2, 3] console.log(array.reverse()) // результат: [3, 2, 1]
Коллекции
_.each
// Underscore/Lodash _.each([1, 2, 3], function(value, index) { console.log(value) }) // результат: 1 2 3
// Native [1, 2, 3].forEach(function(value, index) { console.log(value) }) // результат: 1 2 3
_.every
// Underscore/Lodash function isLargerThanTen(element, index, array) { return element >= 10 } var array = [10, 20, 30] var result = _.every(array, isLargerThanTen) console.log(result) // результат: true
// Native function isLargerThanTen(element, index, array) { return element >= 10 }
var array = [10, 20, 30] var result = array.every(isLargerThanTen) console.log(result) // результат: true
_.filter
// Underscore/Lodash function isBigEnough(value) { return value >= 10 } var array = [12, 5, 8, 130, 44] var filtered = _.filter(array, isBigEnough) console.log(filtered) // результат: [12, 130, 44]
// Native function isBigEnough(value) { return value >= 10 } var array = [12, 5, 8, 130, 44] var filtered = array.filter(isBigEnough) console.log(filtered) // результат: [12, 130, 44]
_.includes
var array = [1, 2, 3] // Underscore/Lodash - also called with _.contains _.includes(array, 1) // результат: true
// Native var array = [1, 2, 3] array.includes(1) // результат: true
// Native (only works with flat array values, no complex objects) var array = [1, 2, 3] array.indexOf(1) > -1 // результат: true
_.map
// Underscore/Lodash var array1 = [1, 2, 3] var array2 = _.map(array1, function(value, index) { return value * 2 }) console.log(array2) // результат: [2, 4, 6]
// Native var array1 = [1, 2, 3] var array2 = array1.map(function(value, index) { return value * 2 }) console.log(array2) // результат: [2, 4, 6]
_.pluck
// Underscore/Lodash var array1 = [{ name: "Alice" }, { name: "Bob" }, { name: "Jeremy" }] var names = _.pluck(array1, "name") console.log(names) // результат: ["Alice", "Bob", "Jeremy"]
// Native var array1 = [{ name: "Alice" }, { name: "Bob" }, { name: "Jeremy" }] var names = array1.map(function(x) { return x.name }) console.log(names) // результат: ["Alice", "Bob", "Jeremy"]
_.reduce
// Underscore/Lodash var array = [0, 1, 2, 3, 4] var result = _.reduce(array, function(previousValue, currentValue, currentIndex, array) { return previousValue + currentValue }) console.log(result) // результат: 10
// Native var array = [0, 1, 2, 3, 4] var result = array.reduce(function(previousValue, currentValue, currentIndex, array) { return previousValue + currentValue }) console.log(result) // результат: 10
_.reduceRight
// Underscore/Lodash var array = [0, 1, 2, 3, 4] var result = _.reduceRight(array, function(previousValue, currentValue, currentIndex, array) { return previousValue - currentValue }) console.log(result) // результат: -2
// Native var array = [0, 1, 2, 3, 4] var result = array.reduceRight(function(previousValue, currentValue, currentIndex, array) { return previousValue - currentValue }) console.log(result) // результат: -2
_.size
// Underscore/Lodash var result = _.size({ one: 1, two: 2, three: 3 }) console.log(result) // результат: 3
// Native var result2 = Object.keys({ one: 1, two: 2, three: 3 }).length console.log(result2) // результат: 3
_.some
// Underscore/Lodash function isLargerThanTen(element, index, array) { return element >= 10 } var array = [10, 9, 8] var result = _.some(array, isLargerThanTen) console.log(result) // результат: true
// Native function isLargerThanTen(element, index, array) { return element >= 10 }
var array = [10, 9, 8] var result = array.some(isLargerThanTen) console.log(result) // результат: true
Функции
_.after
var notes = ['profile', 'settings'] // Underscore/Lodash var renderNotes = _.after(notes.length, render) notes.forEach(function(note) { console.log(note) renderNotes() })
// Native notes.forEach(function(note, index) { console.log(note) if (notes.length === (index + 1)) { render() } })
Язык
_.isNaN
// Underscore/Lodash console.log(_.isNaN(NaN)) // результат: true
// Native console.log(isNaN(NaN)) // результат: true
// ES6 console.log(Number.isNaN(NaN)) // результат: true
Объект
_.assign
// Underscore: _.extendOwn // Lodash function Foo() { this.c = 3; }
function Bar() { this.e = 5; } Foo.prototype.d = 4; Bar.prototype.f = 6; var result = _.assign(new Foo, new Bar); console.log(result); // результат: { 'c': 3, 'e': 5 }
// Native function Foo() { this.c = 3; }
function Bar() { this.e = 5; } Foo.prototype.d = 4; Bar.prototype.f = 6; var result = Object.assign(new Foo, new Bar); console.log(result); // результат: { 'c': 3, 'e': 5 }
_.keys
// Underscore/Lodash var result = _.keys({ one: 1, two: 2, three: 3 }) console.log(result) // результат: ["one", "two", "three"]
// Native var result2 = Object.keys({ one: 1, two: 2, three: 3 }) console.log(result2) // результат: ["one", "two", "three"]
Строка
_.repeat
// Lodash var result = _.repeat('abc', 2) // результат: 'abcabc'
// Native var result = 'abc'.repeat(2) console.log(result) // результат: 'abcabc'
_.toLower
// Lodash var result = _.toLower('FOOBAR') console.log(result) // результат: 'foobar'
// Native var result = 'FOOBAR'.toLowerCase() console.log(result) // результат: 'foobar'
_.toUpper
// Lodash var result = _.toUpper('foobar') console.log(result) // результат: 'FOOBAR'
// Native var result = 'foobar'.toUpperCase() console.log(result) // результат: 'FOOBAR'
_.trim
// Lodash var result = _.trim(' abc ') console.log(result) // результат: 'abc'
// Native var result = ' abc '.trim() console.log(result) // результат: 'abc'
Ссылки
Оригинал Mozilla Developer Network Underscore.js Lodash.js You - Dont - Need - jQuery

Комментариев нет:

Отправить комментарий