javascript - Hämta en array med icke-duplicerade värden från flera arrayer
Jag behöver gå igenom flera arrayer och skapa en ny array med alla värden från de flera arrayerna utan dubbletter, finns det några plugins/snabbt sätt jag kan göra detta på?
var x = {
"12": [3, 4],
"13": [3],
"14": [1, 4]
};
Resultatet bör se ut ungefär så här:
[1,3,4];
Svar #1
Du kan göra detta med ES6 spread-syntax och Object.values-metoden.
var x = {
"12": [3, 4],
"13": [3],
"14": [1, 4]
}
const result = [...new Set([].concat(...Object.values(x)))]
console.log(result)Lösning med Lodash
var x = {
"12": [3, 4],
"13": [3],
"14": [1, 4]
}
const result = _.uniq(_.flatten(_.values(x)))
console.log(result)<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>Svar #2
Du kan använda array#from med set och array#reduce.
var x = {"12": [3, 4],"13": [3],"14": [1, 4]};
result = Array.from(new Set(Object.values(x).reduce((r,a) => r.concat(a), [])));
console.log(result)Du kan också få alla värden från ditt objekt och skapa ett objekt och få alla nycklar från det.
var x = {"12": [3, 4],"13": [3],"14": [1, 4]};
result = Object.keys(Object
.values(x)
.reduce((r,a) => (a.forEach(v => r[v] = true), r),{})
).map(Number);
console.log(result)