Say Diziden yinelenen değerleri alın: [1, 1, 2, 2, 3]
lodash: Böyle bir dizi var
Ben bu durumda çift öğeleri almak istiyorum: [1, 2]
mu lodash desteği bu? Bunu mümkün olan en kısa sürede yapmak istiyorum.
Say Diziden yinelenen değerleri alın: [1, 1, 2, 2, 3]
lodash: Böyle bir dizi var
Ben bu durumda çift öğeleri almak istiyorum: [1, 2]
mu lodash desteği bu? Bunu mümkün olan en kısa sürede yapmak istiyorum.
Bunu kullanabilirsiniz: Bir numara dizideki ikiden fazla kez geçiyorsa, her zaman _.uniq
kullanabileceği
_.filter(array, function (value, index, iteratee) {
return _.includes(iteratee, value, index + 1);
});
Not.
Bu harika! –
Tek liner, bazı ES2015 şekeriyle: const duplicates = _.filter (dizi, (değer, dizin, yineleme) => _.includes (yineleme, değer, dizin + 1)) –
var array = [1, 1, 2, 2, 3];
var groupped = _.groupBy(array, function (n) {return n});
var result = _.uniq(_.flatten(_.filter(groupped, function (n) {return n.length > 1})));
Bu, sıralanmamış diziler için de çalışır.
Bu, önemli ölçüde daha hızlı görünüyor kabul edilen cevaptan daha büyük diziler içindir. İyi iş. –
diğer bir yolu, ama kullanan filtreler ve ECMAScript 2015 (ES6)
var array = [1, 1, 2, 2, 3];
_.filter(array, v =>
_.filter(array, v1 => v1 === v).length > 1);
//→ [1, 1, 2, 2]
Hoşlanıyorum, çok basit! Hile, alt filtrede birden fazla var olup olmadığını tanımlar. – KLVTZ
Nasıl reduce()
ardından countBy()
kullanmaya ne dersiniz?
const items = [1,1,2,3,3,3,4,5,6,7,7];
const dup = _(items)
.countBy()
.reduce((acc, val, key) => val > 1 ? acc.concat(key) : acc, [])
.map(_.toNumber)
console.log(dup);
// [1, 3, 7]
başka yolu da benzersiz öğeleri tarafından gruba ve 1'den fazla öğe var grup anahtarlarını iade
_([1, 1, 2, 2, 3]).groupBy().pickBy(x => x.length > 1).keys().value()
Iyi fazla kod parçasını kullanabilir O (n) 'nin karmaşıklığına sahip olduğundan daha hızlıdır ve bu Lodash'ı kullanmaz.
[1, 1, 2, 2, 3]
.reduce((agg,col) => {
agg.filter[col] = agg.filter[col]? agg.dup.push(col): 2;
return agg
},
{filter:{},dup:[]})
.dup;
//result:[1,2]
Zaten bir dizi sıralanmış mı? – Kiril
Olası bir kopyası [Bir dizinin yinelenen değerleri olup olmadığını kontrol etmek için lodash kullanma] (http://stackoverflow.com/questions/28461014/using-lodash-to-check-whether-an-array-has-duplicate-values) – Gajus