const duplicates = Array
.from(arr.reduce((acc, n) => acc.set(n.id, acc.has(n.id)), new Map))
.reduce((acc, n) => (n[1] && acc.push(n[0]), acc), []);
// или
const duplicates = Object
.entries(arr.reduce((acc, n) => (acc[n.id] = (acc[n.id] || 0) + 1, acc), {}))
.filter(n => n[1] > 1)
.map(n => +n[0]);
// или
const duplicates = [...arr
.reduce((acc, n) => (acc[+acc[0].has(n.id)].add(n.id), acc), [ new Set, new Set ])
.pop()
];
// или
const duplicates = arr
.map(n => n.id)
.filter((n, i, a) => i !== a.indexOf(n))
.filter((n, i, a) => i === a.indexOf(n));
// или
const duplicates = arr.reduce((acc, { id: n }, i, a) => (
!acc.includes(n) && i !== a.findIndex(m => m.id === n) && acc.push(n),
acc
), []);
по нескольким полям (более 50),
const getItemSum = item => item.count * item.price;
let sum = 0;
for (let i = 0; i < data.length; i++) {
sum += getItemSum(data[i]);
}
// или
let sum = 0;
for (const n of data) {
sum += getItemSum(n);
}
const sum = data.reduce((acc, n) => acc + getItemSum(n), 0);
// или
const sum = eval(data.map(getItemSum).join('+'));
const sum = (function getSum(i) {
return i < data.length
? getItemSum(data[i]) + getSum(i + 1)
: 0;
})(0);
if ( new Set([a, b, c]).size === 1 ) { // сколько угодно переменных в массиве
this.returnItemBoolian();
}
Так вот, можно ли его использовать в своих проектах?
Сложно ли учить новый язык программирования после JavaScript?Что Вы подразумеваете под словом "учить новый язык"? Учить синтаксис нового языка? Нет, не сложно, но не особо понятно, зачем оно в целом Вам надо? Знание синтаксиса языка без более глубокого понимания происходящего на более низком уровне - всё равно, что знание алфавита без понимания того, что означаю слова (составленные из букв этого алфавита).
Любое приложение, которое можно написать на JavaScript, будет в итоге написано на JavaScript