Unique values in a nested array (v4)

Revision 4 of this benchmark created on


Preparation HTML

<script>

function forLoopUnique(arr) {
	const unique = new Set();
	
	for(let x=0; x<arr.length; x++) {
		const value = arr[x].value;
		for(let y=0; y<value.length; y++) {
			unique.add(value[y]);
		}
	}
	
	return Array.from(unique);
}

function reducePush(arr) {
	const flattened = arr.reduce((pre, curr) => { 
        pre.push(...curr.value);
    	return pre;
	}, []);
	
	return Array.from(new Set(flattened));
}

function reduceSpreadUnique(arr) {
	return [...new Set(arr.reduce((acc, item) => [...acc, ...item.value], []))]
}
function mapUnique(arr) {
	return Array.from(new Set(arr.map(item => item.value).flat(1)))
}
function map2Unique(arr) {
	return [...new Set(arr.map(item => item.value).flat(1))]
}

</script>

Setup

const arr = [];
for(let i=0; i<10;i++){
	arr.push({
		value: new Array(15).fill(0).map((_, i)=> parseInt(i+Math.random()*1000))
	})
}

Test runner

Ready to run.

Testing in
TestOps/sec
Reduce with spread
reduceSpreadUnique(arr)
ready
Map
mapUnique(arr)
ready
map2Unique
map2Unique(arr)
ready
forLoopUnique
forLoopUnique(arr)
ready
reducePush
reducePush(arr)
ready

Revisions

You can edit these tests or add more tests to this page by appending /edit to the URL.