Какие возможности 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